协议
如果类遵守了协议,那么这个类的实例对象就具备了协议中的行为
也就必须要实现协议中的方法,否则不能实现委托
协议的定义
@protocol 协议的名字 <NSObject>
… … (声明遵守该协议的类必须要实现的方法)
方法有两种关键字来修饰:@required和optional
@required表示遵守协议的类必须要实现该方法, 是默认的属性
@optional表示可以不去实现该方法
@end
下面还要定义一个遵循某个协议的指针变量(其中参数使用assign而不使用retain,即不进行内存管理,只是普通赋值,在自动内存管理中使用weak关键字);
@property (assign) id<要遵循的协议名> 指针变量名;
协议上的指针变量可以调用协议上的方法
声明一个方法用来处理委托
-(void)delegate; //根据是否需要参数来决定是否加上参数
定义协议的类作为委托的发起者, 代理来接收委托
协议的作用是规范接口,但是不能声明变量
它弥补了OC不能多继承的先天缺陷(一个类遵守多个协议时.就类似于多继承)
同时继承也有规范接口的作用
oc中的选择器SEL @selector
SEL sel=@selector(方法名); //将方法名转化为选择器类型SEL
[类名 respondsToSelector :sel]返回BOOL值来判断类中是否实现了某方法,sel是方法名转化来的选择器,实现了返回1否则返回0.
http://www.cnblogs.com/PaulpauL/
版权声明:本文为博主原创文章,未经博主允许不得转载。