协议

如果类遵守了协议,那么这个类的实例对象就具备了协议中的行为

也就必须要实现协议中的方法,否则不能实现委托

协议的定义

@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/ 版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:https://www.cnblogs.com/PaulpauL/p/4728470.html