Category Extension protocol 總結

一.Category  分類,類目 

目的是爲沒有源代碼的類添加方法(只能添加方法不能添加實例變量)

是擴充一個類的功能的方式之一,爲原有的類擴充方法,會成爲原類的一部分,使用即可

category 也分爲.h接口部分和.m實現部分

.h 文件中填寫方法的聲明 .m文件中填寫方法的實現

category 的定義格式,@interface 開頭 + 擴展類的類名(分類名) @end結束

舉一個例子

:爲字符串類添加一個降序比較的category

1.在.h中聲明

- (NSComparisonResult)compareAgainst:(NSString *)anString; 

2.在.m中進行實現

  - (NSComparisonResult)compareAgainst:(NSString *)anString
{
    
return -[self compare:anString];
}

3.在main.m中調用
 NSArray *arr = @[@"dd",@"cc",@"aa",@"bb",@"ff"];
 數組降序排序
 NSArray *arrDes = [arr sortedArrayUsingSelector:@selector(compareAgainst:)];
 NSLog(@"%@",arrDes);
二.Extension 延展
 extension 是爲有源代碼的類擴充內容的
 extension 也是擴充類的功能的一種方式,只不過延展擴充的內容是私有的,是在.m文件定義的.
 extension 既可以擴展方法也可以擴展實例變量,只不過都是私有的,外界無法直接訪問
三.協議protocol

/*協議就相當於一個任務清單 ,規定了要做的操作,(只有一系列方法聲明),誰服從該協議時就要實現協議中的方法(完成任務清單中的任務),所以協議只有.h文件,沒有.m文件.

*/


@interface Person : NSObject <TeachingProtocol>

<尖括號>表示服從協議,服從的協議寫在<>之內


//協議要讓類來服從,服從完協議之後要實現協議中的方法.


@optional  可選的 被他修飾的方法服從協議的類可以選擇實現(可以實現,也可以不實現)

@required  必須的 被他修飾的方法服從協議的類必須實現(沒有商量的餘地).

協議通常需要寫一個代理

//代理的語義特性爲assign

@property (nonatomic,assign) id <WomanDelegate> delegate;


 






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章