【開發(fā)技巧】父類方法子類重寫技巧

一,父類的方法不需要實(shí)現(xiàn)(是個(gè)空方法),子類按照情況實(shí)現(xiàn)

某些情況下,父類提供一個(gè)方法,這個(gè)方法在父類中不需要處理業(yè)務(wù),通常會(huì)寫成一個(gè)空方法

- (void)viewDidDisappearPop{   
}

或者直接不去實(shí)現(xiàn)(這時(shí)候會(huì)出現(xiàn)警告??)。這種方式不是很優(yōu)雅,我們可以通過協(xié)議的方式處理這種情況。

實(shí)現(xiàn):

1,使用協(xié)議聲明父類中需要在子類中進(jìn)行實(shí)現(xiàn)的方法

// 協(xié)議
@protocol CKBaseViewControllerDidDisappearPopProtocal <NSObject>

@optional

- (void)viewDidDisappearPop;

@end

父類遵守我們的協(xié)議(如果不在父類中遵守協(xié)議,父類中調(diào)用協(xié)議中方法會(huì)報(bào)錯(cuò))


@interface CKBaseViewController : UIViewController <CKBaseViewControllerDidDisappearPopProtocal>
@end

在實(shí)現(xiàn)文件中調(diào)用到這個(gè)方法的地方判斷是否實(shí)現(xiàn)了這個(gè)方法,如果實(shí)現(xiàn)了這個(gè)方法,進(jìn)行調(diào)用

// 在控制器消失 `- (void)viewDidDisappear:(BOOL)animated` 的時(shí)候,調(diào)用協(xié)議中聲明的方法
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];

    if ([self respondsToSelector:@selector(viewDidDisappearPop)]) {
            [self viewDidDisappearPop];
    }
}

二,重寫父類方法必須調(diào)用 super 調(diào)用對(duì)應(yīng)方法時(shí)使用

來源:http://m.weibo.cn/status/4064104203128859?uid=3321824014&id=4064104203128859&v_p=11&type=comment

#ifndef NS_REQUIRES_SUPER
#if __has_attribute(objc_requires_super)
#define NS_REQUIRES_SUPER __attribute__((objc_requires_super))
#else
#define NS_REQUIRES_SUPER
#endif
#endif
@interface View1 : UIView
- (void)test NS_REQUIRES_SUPER;
@end

View2 繼承 View1,重寫 - (void)test 方法

Paste_Image.png

出現(xiàn)黃色警告??,沒有調(diào)用 [super test] 方法。運(yùn)行不會(huì)報(bào)錯(cuò)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,734評(píng)論 18 399
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,069評(píng)論 0 9
  • 父類引用指向子類對(duì)象指的是: 例如父類Animal,子類Cat,Dog。其中Animal可以是類也可以是接口,Ca...
    木有魚丸啦閱讀 995評(píng)論 0 4
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,265評(píng)論 0 62
  • 雖然過去了那么多年,我始終不愿意回憶那個(gè)晚上。不,確切地說,從那個(gè)晚霞鋪天蓋地映紅半邊天的傍晚開始,一切都和做夢(mèng)一...
    科學(xué)漫畫閱讀 315評(píng)論 0 0

友情鏈接更多精彩內(nèi)容