码迷,mamicode.com
首页 > 其他好文 > 详细

OC Protocol----协议

时间:2015-06-11 18:34:32      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

类似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];  

 

OC Protocol----协议

标签:

原文地址:http://www.cnblogs.com/killiancheung/p/4569713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!