OC--协议
2017-10-26 本文已影响20人
Cy_Star
一、协议
1、 协议是多个对象之间协商的一个接口对象
2、协议提供一系列方法用来在协议的实现者何代理者之间的一种通信方式。
3、协议类似于java 中的接口 或 C++的纯虚函数。
4、协议声明:@protocol
@protocol Define <NSObject>
5、@required:表明某方法必须实现
@required
-(void)update:(int)value; //这个方法必须实现
6、@optional:表明某个方法可选择实现
@optional
-(void) download; //这个方法可以选择实现,也可以不实现
7、协议需要继承于 基协议 <NSObject>
8、协议可以多继承,继承多个协议 < NSObject, **** , **** >。
二、定义协议
@protocol Define <NSObject>
@optional
-(void) download; //这个方法可以选择实现,也可以不实现
@required
-(void)update:(int)value; //这个方法必须实现
@end
三、使用协议
#import "Define.h"
@interface To : NSObject<Define>
@end
四、实现协议
@implementation To
-(void)update:(int)value
{
NSLog(@"必须实现的 方法%d",value);
}
@end
五、创建并使用协议
方式1
To * t = [[To alloc]init];
[t update:1];
[t myTest];
SEL sel = @selector(download); //download 这个方法转化成 SEL类型的方法
if ([t respondsToSelector:sel]) {
// t 是否 响应了 sel方法(download)
[t download];
}
方式2
// <协议方式>
id <Define> df = [[To alloc]init];
// df 是不能使用 [df myTest]; 方法,df 是协议类型的对象,只能响应协议里方法
if ([df respondsToSelector:@selector(update:)]) {
[df update:2];
}
[df download];