在自定義協議的頭文件 .h中
@protocol NSDelegate <NSObject>
@optional //可選
- (void)OnOption:(NSString *)pStr;
@required //必須
- (void)OnRequired:(NSString *)pStr;
@end
@interface NSClass :NSObject
id<BSDelegate> delegate;
@end
@property(assian) id<BSDelegate> delegate;
在自定義協議的實現文件.m中
@synthesize delegate;
在制定協議實現文件中調用協議
如果委托方法是可實現的,可以在調用委托方法的用respondsToSelector來判斷是否已經實現了委托方法。
例如:
[delegate respondsToSelector@selector(OnOption:)]
然後調用。
如果是必須實現的則直接調用:
[delegate OnRequired:@"test"]
其它類中聲明和使用協議
@interface UIMyView : UIViewController<BSDelegate>
NSClass *m_pClass;
@end
UIMyView 的.m文件中制定委托並實現相關委托方法
m_pClass.delegate = self;
再實現委托方法:
- (void)OnOption:(NSString *)pStr
{
}
- (void)OnRequire:(NSString *)pStr
{
}