1.协议:用于声明专门被别的类实现的方法。协议本身不是类,定义其他类可以实现的接口(方法)
说明:1.一个协议可以扩展自另一个协议,一般扩展自NSObject,需要扩展自多个协议中间用逗号分隔。
2.修饰协议方法的关键字:@require(必须实现),@optional(可选择实现)。默认是require。
3.一个类可以实现多个协议。
4.协议的实现在声明上,不能放到类的实现上(也就是说必须写成@interface Person:NSObject而不能写成@implementation Person)。
5.协议中不能定义属性、成员变量等,只能定义方法。
作用:1.统一接口
2.模拟实现多继承(总的来说单继承可以继承父类的属性方法并且不用重写父类方法可以使用。一个类中可以遵守多个协议实现多继承,只能继承方法,并且要重写实现协议方法)
3.实现委托代理
2.委托:主动方,持有带协议的id指针,可以使用协议
说明:1.代理属性,同时约定作为代理的对象必须实现协议 @property(nonatomic,weak) id<协议名字> delegate; id可以表示任何一个Object对象类型。
2.用weak 修饰id 指针防止循环引用内存泄漏 ,原因:id 指针指的是代理方,委托方在代理方创建对象实现协议方法时会引用计数加1,被代理方所拥有,如果委托方用strong 修饰再拥有代理方就会循环引用
3.代理方:被动方,遵从协议,实现协议中的方法
网友评论