標籤:
一、類目:(Category)
是在原有類的基礎之上添加方法,在使用的時候只需要用原有類執行個體化出來的對象即可;
實際開發中什麼情況下使用類目?
已經封裝好的類,(不希望再改變原有類)
團隊裡面分工開發一個模組的時候可以使用自己定義的方法;
二、延展:(Extension)的基本概念和用法;
在xcode4.3之前直接使用self 調用方法 那時候會報錯,所以的用延展
就是在類中添加私人方法,延展中聲明的方法在類的本身的@interface 類名()和它對應的@end之間實現;
類有時需要方法只有自己所見,我們可以通過延展類的方式定義類的私人方法;
三、協議:Protocol
協議就是共同遵守的一個條約,只有一個聲明檔案;
協議時可以被任何類實現的方法,協議本身不是類,他是定義了一個其他類可實現的介面;
協議是 只聲明 不實現
沒有實現的類目 又叫做 非正式協議
因為一般情況下類都從NSObject的類目中所聲明的方法,這個類可以實現也可以不實現;
非正式協議是以圓括弧表示,而正是協議是以<>來表示;
如果子類要建立協議時,只要在基類遵守某一協議就行;
在哪一個類裡面匯入了協議,就要在哪一個類裡面 實現這個協議的方法,
NSObject的類目中所列出的方法表示可能希望要實現的方法,如果使用可能更好的完成工作;
註:
@required 必須 強制實現 不實現 就報錯;
@optional 選擇實現的
執行個體:
BOOL n = [xueSheng respondsToSelector:@selector(night)];
if (n!=NO) {
NSLog(@"糟了,沒有打卡!");
[xueSheng night];
}
else
{
NSLog(@"還好!");
}
解釋:
1、respondsToSelector://判斷能不能響應一個方法;
2、@selector方法選取器 是 用來選擇方法的
3、判斷後是一個bool類型的,所以需要一個bool來接收;
4、if對協議進行確定是否有協議;
Objective-C類目延展協議