协议和委托代理

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.代理方:被动方,遵从协议,实现协议中的方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,822评论 18 399
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,653评论 30 472
  • 在项目中我们经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式来传递一些参数。...
    张战威ican阅读 906评论 0 8
  • 转载!! http://www.cocoachina.com/ios/20160317/15696.html 本文...
    星空下的菜地阅读 769评论 0 6
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    扶光启玄阅读 5,208评论 0 13

友情链接更多精彩内容