内容简介:1. 区分:类的NSObject与协议的NSObjectiOS开发中,苹果提供的一些系统类都属于NSObject的子类,例如UIColor类的定义如下所示。
1. 区分:类的NSObject与协议的NSObject
iOS开发中,苹果提供的一些系统类都属于NSObject的子类,例如UIColor类的定义如下所示。
UIColor
或者自定义的类,也继承自NSObject,例如下图所示。
自定义类的父类
但是,NSObject不仅仅代表基类,还有协议的意思,我们可以称之根协议,例如下图所示:
NSObject协议
事实上,从NSObject类的定义可知,NSObject的类本身就遵循NSObject协议,如下图所示。
NSObject
2. 协议NSObject的用法
-
NSObject协议的定义
image.png
-
普通协议的用法
@protocol MyProtocol - (void)foo; @end
-
继承根协议的用法
@protocol MyProtocol <nsobject> - (void)foo; @end </nsobject>
-
多继承的用法
假设你自定义一个继承自UITextField的子类MyTextFeild,同时自定义一个代理MyTextFeildDelegate的属性如下:
@protocol MyTextFieldDelegate <nsobject> //... @property (nonatomic, weak) id <mytextfeilddelegate> delegate; </mytextfeilddelegate> </nsobject>
这时候会报错的,因为这个delegate与父类的delegate的协议冲突。一个解决办法是利用协议的多继承:将自定义的协议继承自父类中的协议。
@protocol MyTextFieldDelegate <nsobject uitextfielddelegate=""> //... @property (nonatomic, weak) id <mytextfeilddelegate> delegate; </mytextfeilddelegate> </nsobject>
3. 拓展
OC里面的类本来是不支持多继承的,但有的面试官还是会问到iOS里面如何实现多继承?除了运行时的办法,还有一种就是通过协议的多继承来实现。
作者:陈满iOS
链接:https://www.jianshu.com/p/1ba089d69c73
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- HTTP 状态码及含义
- Go-源码文件的分类和含义
- Go pprof内存指标含义备忘录
- 读懂 TS 中联合类型和交叉类型的含义
- react - redux 中的 reducer 的命名和含义
- MSBuild 中的特殊字符($ @ % 等):含义、用法以及转义
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning Apache Struts
Arnold Doray / Apress / 2006-02-20 / USD 44.99
Beginning Apache Struts will provide you a working knowledge of Apache Struts 1.2. This book is ideal for you Java programmers who have some JSP familiarity, but little or no prior experience with Ser......一起来看看 《Beginning Apache Struts》 这本书的介绍吧!