Category (類目)
class 觀念的延伸, 對於一個class的methods, 你可以分成不同的category, 然後在不同的實作檔定義, 這對大型的專案共同開發同一個class很有用, 另一個好處是可以加入新的方法到一個class而不會影響修改到原有的定義
實作方法例如:
in 2dops.m
@interface GraphicObject (2Dops)
-(void)drawObject:(GraphicObject*) gb;
-(void)moveObject:(GraphicObject*) gb:(int) x:(int) y;
@end
in 3dops.m
@interface GraphicObject(3Dops)
-(void)rorateObject:(GraphicObject*) gb: (int) x-axis: (int) y-axis;
@end
另有無命名的category, 其實作必須要跟class 的實作在同一個實作檔案
Protocol(協定)
objC可以宣告介面, 宣告方式如下
@protocol ProtocolName
-(id) protocolmethods: (ParameterType) Para1;
@end
class如果要conform此protocol, 就要實作protocolmethod
在class宣告地方
@interface classname:NSObject <ProtocolName>
method 實作方法跟class method一樣