标签:
类似Java的泛型与接口的结合体,用于类型的<>中,可以多继承(按照OC的说法叫遵从某些协议)
1、定义协议
@protocol Client <NSObject> -(void)defaultMethod;//默认必须实现 @required//必须 -(void)required; @optional//可选 -(void)optional; @end
2、符合(实现)协议
#import "Client.h" @interface JackClient : NSObject<Client> @end @implementation JackClient -(void)defaultMethod{ NSLog(@"this is defaultMethod"); } -(void)required{ NSLog(@"this is required method"); } @end
3、使用并调用回调
#import "Client.h" #protocol JackClient @interface Test : NSObject<Client>{ id<Client> client; } -(id)initWithClient:(id<Client>) client; -(void) turnTheCrank; @property(retain) id<Client> client; @end @implementation Test -(id)initWithClient:(id<Client>)client{ self = [super init]; if (self) { _client = client; } return self; } -(void) turnTheCrank{ [self.client defaultMethod]; [self.client required]; if ([self.client respondsToSelector:@selector(optional)]) {//可选回调可先判断是否实现,再调用 [self.client optional]; } } @end
最后
[[[Test alloc]initWithClient:[[JackClient alloc] init]] turnTheCrank];
标签:
原文地址:http://www.cnblogs.com/killiancheung/p/4569713.html