一.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];
}
NSArray *arrDes = [arr sortedArrayUsingSelector:@selector(compareAgainst:)];
NSLog(@"%@",arrDes);
/*協議就相當於一個任務清單 ,規定了要做的操作,(只有一系列方法聲明),誰服從該協議時就要實現協議中的方法(完成任務清單中的任務),所以協議只有.h文件,沒有.m文件.
*/
@interface Person : NSObject <TeachingProtocol>
<尖括號>表示服從協議,服從的協議寫在<>之內
//協議要讓類來服從,服從完協議之後要實現協議中的方法.
@optional 可選的 被他修飾的方法服從協議的類可以選擇實現(可以實現,也可以不實現)
@required 必須的 被他修飾的方法服從協議的類必須實現(沒有商量的餘地).
//代理的語義特性爲assign
@property (nonatomic,assign) id <WomanDelegate> delegate;