iOS 协议代理的继承和扩展
2017-05-09 20:36
441 查看
在编码时,为了部分代码复用,可能会用带继承关系,有时,父类的协议代理有限,需要我们在继承的同时,扩展父类的协议方法。此时,存在两种选择:
举个例子,我有一个类WYKTextField,继承自类UITextField,UITextField有一个代理 delegate,而我自己的类XMTextField也有自己的代理delegate。
现在xcode提示两个警告
1、 propert type XMTextFieldDelegate is incompatible with type UITextFieldDelegate inherited from UITextField。
2、 Auto property synthesis will not synthesize property 'delegate'; it will be implemented by its superclass,use @dynamic to...
第二个就是用
在子类中 仿照父类的情况,定义一套协议代理方法,注意新的协议代理属性不同于父类的delegate 即可,如dataSource,使用时方式相似,这里不再赘述。
对代理的深入学习,请阅读:
iOS 协议代理的深入理解
iOS 关于修饰代理用weak还是assign, strong
作者水平有限,如有不足之处,欢迎交流学习!
1、在父类协议代理delegate的基础上扩展新方法。
如UIKit框架中,UITableView 继承自UISCrollView ,同时他们都有同名的Delegate 属性,UITableView的Delegate是在UISCrollView的基础上扩展的。举个例子,我有一个类WYKTextField,继承自类UITextField,UITextField有一个代理 delegate,而我自己的类XMTextField也有自己的代理delegate。
实现方式:
@roperty (nonatomic, weak)id <WYKTextFeildDelegate> delegate;
现在xcode提示两个警告
1、 propert type XMTextFieldDelegate is incompatible with type UITextFieldDelegate inherited from UITextField。
2、 Auto property synthesis will not synthesize property 'delegate'; it will be implemented by its superclass,use @dynamic to...
解决第一警告------子类协议遵循父类的协议(iOS 中的协议可以是多继承关系)
@protocol XMTextFieldDelegate<NSObject,UITextFieldDelegate> @end
解决第二个警告------用@dynamic
@implementation XMTextField @dynamic delegate; @end
总结:
第一个就是遵循父类的代理方法。第二个就是用
@dynamic告诉编译器,属性的setter与getter方法由用户自己实现,不自动生成。(按代理的使用的正常步骤设置,无需专门写setter与getter方法)
2、在子类中创建一个不同与父类的新的协议代理属性。
如UIKit框架中,UITableView 继承自UISCrollView,UITableView 子类拥有DataSource 协议代理属性,和 delegate 独立使用。在子类中 仿照父类的情况,定义一套协议代理方法,注意新的协议代理属性不同于父类的delegate 即可,如dataSource,使用时方式相似,这里不再赘述。
对代理的深入学习,请阅读:
iOS 协议代理的深入理解
iOS 关于修饰代理用weak还是assign, strong
作者水平有限,如有不足之处,欢迎交流学习!
相关文章推荐
- ios深度解析之Swift(枚举,继承,协议,扩展)
- iOS开发中关于继承、扩展和协议的理解
- iOS设计模式学习 (二) OC协议之接口继承和代理设计
- iOS巅峰之Swift结构体和类, 枚举, 构造器, 继承, 协议, 扩展(完结篇)
- iOS 工作之余小总结(二)类的高度总结----封装,继承,派生,重写,多态,协议,分类,扩展,组合,聚合。
- iOS开发 - 协议与代理
- IOS学习之一个示例弄懂代理(delegate)和协议
- ios 协议代理
- iOS开发篇——OC 协议和代理设计模式介绍
- iOS 开发之协议-代理传值
- OC中分类、类扩展、Block、协议(由协议引出的代理模式)
- IOS 协议与代理 的小注
- iOS 开发之协议-代理传值
- iOS 自定义协议代理方法的易漏
- ios学习笔记(二)之Objective-C类、继承、类别和协议 - superlucky
- 【iOS开发-26】利用协议代理实现导航控制器UINavigationController视图之间的正向传值和反向传值
- iOS使用协议代理封装系统下载HttpRequest
- IOS开发之协议和代理
- 【iOS开发技术分享】协议与代理
- [置顶] Objective-C ,ios,iphone开发基础:protocol 协议(委托,代理)的声明