創立category文件:
這裡,必定要選好base的class, 以下:
不管一個類設計的若何完善,都弗成防止的會碰到沒有猜測到的需求,那怎樣擴大現有的類呢?固然,繼續是個不錯的選擇。然則Objective-C供給了一種 特殊的方法來擴大類,叫Catagory,可以靜態的為曾經存在的類添加新的行動。如許可以包管類的原本來的基本上,較小的修改便可以增長須要的功效。使 用Category對類停止擴大時,不須要拜訪其源代碼,也不須要創立子類,如許我們可以擴大體系供給的類。Category應用簡略的方法,完成了類的相干辦法的模塊化,把分歧的類辦法分派到分歧的分類文件中。
經由過程一個簡略的例子看看Category若何應用。
如今我們有一個類叫MyClass
#import
@interface MyClass : NSObject
-(void) myPrint;
@end
#import "MyClass.h"
@implementation MyClass
-(void) myPrint{
NSLog(@"myPrint 挪用了");
}
@end
它有一個實例辦法:myPrint,待會我們可以在擴大後挪用它
好了,有了下面的MyClass後,我們要在不增長子類,不修正MyClass類的情形下增長一個HelloWorld的辦法,怎樣添加呢?只需添加兩個文件MyClass+HelloWorld.h 和 MyClass+HelloWorld.m。
在聲明文件和完成文件頂用“()”把Category的稱號括起來。原類名+Category”的這是商定的文件定名方法。
看看這兩個文件怎樣完成,在Xcoed上按Command+N,新建文件,選擇Objective-C category方法創立類,如許Xcode會主動幫你創立商定定名方法的文件。
Category on的類是MyClass,選對了哦
如許Xcode就幫你創立了MyClass+HelloWorld.h 和 MyClass+HelloWorld.m這兩個文件了。
那末我們如今添加一個HelloWorld辦法。看看完成後的代碼以下:
#import "MyClass.h"
@interface MyClass (HelloWorld)
-(void)HelloWorld;
@end
#import "MyClass+HelloWorld.h"
@implementation MyClass (HelloWorld)
-(void)HelloWorld{
NSLog(@"你好 倫敦奧運!");
}
@end
在main中挪用
MyClass *myclass = [[[MyClass alloc]init]autorelease];
[myclass HelloWorld];
[myclass myPrint];
運轉打印成果:
2012-08-09 11:24:16.697 objectiveC[16053:403] 你好 倫敦奧運!
2012-08-09 11:24:16.699 objectiveC[16053:403] myPrint 挪用了
那的Category的應用場景有那些呢:
1、類包括了許多個辦法完成,而這些辦法須要分歧團隊的成員來完成
2、當你在應用基本類庫中的類時,你不想繼續這些類而只想添加一些辦法時。
Category能完成下面的需求,固然也有應用Category是須要留意的成績:
1、Category可以拜訪原始類的實例變量,但不克不及添加實例變量,假如想添加變量,那就經由過程繼續創立子類來完成。
2、Category可以重載原始類的辦法,不年夜不推舉這麼做,如許會籠罩失落原始類的辦法。假如確切要重載,那就經由過程繼續創立子類來完成。
3、和通俗接口有所差別的是,在Category的完成文件中的實例辦法只需你不去挪用它你可以不消完成一切聲明的一切辦法。
【簡略引見iOS開辟中關於category的運用】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!