OC语言——protocol
2015-03-25 12:34
155 查看
本着服务自己的原则,坚持书写!
protocol:(协议)符号:<>
声明一大堆方法(不能声明成员变量),只要某个类遵守了这个协议,那么相当于拥有这个协议的所有方法声明。
父类遵守了某个协议,那么子类也遵守了。
书写格式:
同时需要注意两个关键字
@required // 要求实现,不实现就会发出警告 (默认情况)
@optional // 不要求实现
在其他类的声明中就要遵守这个协议:
注:后面的“<>”中可以书写多个协议,只要中间用“,”隔开
例如:
协议间的遵守和基协议
一个协议遵守了另外一个协议,就拥有了另外一个协议所拥有的方法声明
@protocol 协议1 <协议2> // 协议1里面拥有协议2的所有方法,不必再去写方法的声明了
基协议:<NSObject>
所以写协议要这样:
或者:
限制对象类型:
//
要求a1,保存的对象必须遵守MyProtocol,并且继承了Person
保存的对象遵守了协议,又要继承某个类:
另一种类型(看懂即可):继承了Person类,遵守MyProtocol协议
遵守协议的set方法:
协议的提前声明:
l类的声明:可以使用@class提前声明一个类
@class Person
协议也可以:
@protocol MyProtocol;
但是真正需要协议的时候,必须在.m文件中声明#import <MyProtocol.h>
protocol:(协议)符号:<>
声明一大堆方法(不能声明成员变量),只要某个类遵守了这个协议,那么相当于拥有这个协议的所有方法声明。
父类遵守了某个协议,那么子类也遵守了。
书写格式:
@protocol 协议名称 //方法声明列表 @end
同时需要注意两个关键字
@required // 要求实现,不实现就会发出警告 (默认情况)
@optional // 不要求实现
// 定义了一个名叫MyProtocol的协议 @protocol MyProtocol <NSObject> - (void)test3; @required - (void)test; - (void)test1; @optional - (void)test2; @end
在其他类的声明中就要遵守这个协议:
@interface Person : NSObject <MyProtocol>
注:后面的“<>”中可以书写多个协议,只要中间用“,”隔开
@interface 协议名称 : NSObject <协议1,协议2> @end
例如:
@interface Person <MyProtocol, MyProtocol2, MyProtocol3> @end
协议间的遵守和基协议
一个协议遵守了另外一个协议,就拥有了另外一个协议所拥有的方法声明
@protocol 协议1 <协议2> // 协议1里面拥有协议2的所有方法,不必再去写方法的声明了
基协议:<NSObject>
所以写协议要这样:
@protocol MyProtocol <NSObject> // 遵守基协议<pre name="code" class="objc">@end
或者:
@protocol MyProtocol2 <MyProtocol> // 遵守MyProtocol协议,也就相当于遵守了NSObject协议<pre name="code" class="objc">@end
限制对象类型:
//
要求a1,保存的对象必须遵守MyProtocol,并且继承了Person
Person<MyProtocol> *a1 = [[Person alloc] init]; a1 = nil;
保存的对象遵守了协议,又要继承某个类:
// 要求obj,保存的对象必须遵守MyProtocol、并且继承了Person Person<MyProtocol> *obj = [[Person alloc] init];
另一种类型(看懂即可):继承了Person类,遵守MyProtocol协议
id<MyProtocol> obj4 = [[Person alloc] init]; obj4 =nil;
遵守协议的set方法:
@property (nonatomic, strong) id<MyProtocol> a;
协议的提前声明:
l类的声明:可以使用@class提前声明一个类
@class Person
协议也可以:
@protocol MyProtocol;
但是真正需要协议的时候,必须在.m文件中声明#import <MyProtocol.h>
相关文章推荐
- 黑马程序员————OC语言BLOCK和Protocol总结
- IOS开发---OC语言-㉚protocol协议
- 黑马程序员——OC语言的protocol协议
- 【OC语言】第八天·block和Protocol
- 黑马程序员——OC语言——block、protocol、代理模式
- OC语言中的protocol
- OC语言的Block与Protocol(协议)
- OC语言--Protocol
- 黑马程序员——OC语言基础篇---block和protocol
- OC语言-06-OC语言-block与protocol
- 黑马程序员——OC语言------Block、protocol协议、代理设计
- 黑马程序员-OC语言协议Protocol
- 黑马程序员——OC语言学习——ARC机制、block代码块、protocol协议、protocol协议的应用
- OC语言BLOCK和Protocol总结
- 黑马程序员——OC语言Protocol(协议)
- 黑马程序员——OC语言中的协议protocol
- ios 学习第十七天 OC语言 Protocol基本使用
- 黑马程序员---【OC语言】07block以及protocol
- 黑马程序员——10、OC语言(block、protocol和代理模式)
- Oc语言之Protocol代理设计模式