代码改变世界

代理

2015-08-19 21:11  dengchaojie_learner  阅读(159)  评论(0编辑  收藏  举报

代理必须是对象,所以声明的方法必须是对象方法,以减号开头

 

代理:A发消息给B,那么B就要做A的代理,实现A声明的代理方法

 

  1. 一个协议可以扩展自另一个协议,例如上面AnimalDelegate就扩展自NSObject,如果需要扩展多个协议中间使用逗号分隔;
  2. 和其他高级语言中接口不同的是协议中定义的方法不一定是必须实现的,我们可以通过关键字进行@required和@optional进行设置,如果不设置则默认是@required(注意ObjC是弱语法,即使不实现必选方法编译运行也不会报错);
  3. 协议通过<>进行实现,一个类可以同时实现多个协议,中间通过逗号分隔;
  4. 协议的实现只能在类的声明上,不能放到类的实现上(也就是说必须写成@interface Person:NSObject<AnimalDelegate>而不能写成@implementation Person<AnimalDelegate>);
  5. 协议中不能定义属性、成员变量等,只能定义方法;