類目的特點:
若類目中重寫了類現有的方法,則優先呼叫類目方法
類目無法新增成員變數,而可以新增屬性
類目中新增屬性需要使用@dynamic動態合成,手動實現setter和getter方 法,並且改類已經存在對應的成員變數
為什麼我們要使用類目?
某些情況下,我們需要對一些現有的類新增一些方法
通常做法是繼承要新增方法的類,然後在子類中擴充套件出新的方法
objective-c的動態語言機制,可以為現有的類新增新的方法
類目例項
現在我們要對nsstring增加新的方法用於比較兩個字串的大小,告訴使用者誰大。
第一步:建立類目
第二步:在.h中建立乙個方法,該方法就是類目給nsstring增加的方法,用於比較兩字字串大小
nsstring + compare.h
- (nscomparisonresult)comparevalue:(nsstring*)string;
nsstring + compare.m
#import"nsstring+compare.h"
@implementationnsstring (compare)
-(nscomparisonresult)comparevalue:(nsstring *)stringelse if (a < b)else{
nslog(@"_delegate不存在");
return;
@end
business.h
#import
#import"customer.h"
@inte***cebusiness : nsobject
//要成為**人必須遵守協議,並且實現協議的方法
@end
business.m
#import"business.h"
@implementationbusiness
//實現協議的方法
-(void)buyiphone:(nsstring*)iphonetype{
nslog(@"有你需要的%@",iphonetype);
@end
main.m
//委託協議
customer *custom = [[customer alloc] init];
business *business = [[business alloc]init];
custom.delegate = business;//設定**人
[custom willbuy];
OC 類目延展協議
目錄 一 類目 什麼是類目?類目 也稱類別 category 是一種為現有類新增新方法的方式。類目和乙個類的實現非常相似,只是語法稍有不同 類目的語法 類目的特點 為什麼我們要使用類目?類目例項 現在我們要對nsstring增加新的方法用於比較兩個字串的大小,告訴使用者誰大。第一步 建立類目 第二步...
OC 11 1類目與延展
inte ce tool nsobject property nonatomic,strong nsstring property1 void function1 原始類的方法 end 既然建立了類目,我們就在tool.h接著上面繼續往下,咱們來用一下 pragma mark 類目 在類目中為原類新...
OC學習 協議 類目和延展
定義乙個student類 import 協議studentprotocol protocol studentprotocol property nonatomic,assign nsinteger age void fun1 end student類遵循協議studentprotocol inte ...