您的位置:首页 > 其它

OC Protocol----协议

2015-06-11 17:35 316 查看
类似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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: