Objective-C類目延展協議

注:小編在技術上仍是有很大的紕漏,發表此博客但願各位有路過的大牛人物給予評論,給於指正,小編在此很是感謝!此文章爲小編本身作的筆記,有不當之處望請指出,小編非常感謝,若用於一些抄襲的勾當,出現一些不可挽回的問題,小編在此聲明不負任何責任;xcode

1、類目:(Category)ui

是在原有類的基礎之上添加方法,在使用的時候只須要用原有類實例化出來的對象便可;spa

實際開發中什麼狀況下使用類目?code

         已經封裝好的類,(不但願再改變原有類)對象

         團隊裏面分工開發一個模塊的時候可使用本身定義的方法;接口

 

2、延展:(Extension)的基本概念和用法;開發

 

在xcode4.3以前直接使用self 調用方法  那時候會報錯,因此的用延展博客

 

就是在類中添加私有方法,延展中聲明的方法在類的自己的@interface  類名()和它對應的@end之間實現;io

 

類有時須要方法只有本身所見,咱們能夠經過延展類的方式定義類的私有方法;require

3、協議:Protocol

協議就是共同遵照的一個條約,只有一個聲明文件;

協議時能夠被任何類實現的方法,協議自己不是類,他是定義了一個其餘類可實現的接口;

協議是 只聲明  不實現

 

沒有實現的類目 又叫作 非正式協議

 

由於通常狀況下類都從NSObject的類目中所聲明的方法,這個類能夠實現也能夠不實現;

 

非正式協議是以圓括號表示,而正是協議是以<>來表示;

 

若是子類要建立協議時,只要在基類遵照某一協議就行;

 

在哪個類裏面導入了協議,就要在哪個類裏面 實現這個協議的方法,

 

NSObject的類目中所列出的方法表示可能但願要實現的方法,若是使用可能更好的完成工做;

注:

@required 必須 強制實現    不實現    就報錯;

@optional  選擇實現的

實例:

BOOL n = [xueSheng respondsToSelector:@selector(night)];

        if (n!=NO) {

            NSLog(@"糟了,沒有打卡!");

            [xueSheng night];

        }

        else

        {

            NSLog(@"還好!");

        }

解釋:

一、respondsToSelector://判斷能不能響應一個方法;

二、@selector方法選擇器  是 用來選擇方法的

三、判斷後是一個bool類型的,因此須要一個bool來接收;

四、if對協議進行肯定是否有協議;

相關文章
相關標籤/搜索