For*_*est 2 iphone protocols interface nsobject
您可以在NSObject.h文件中看到以下内容
// 1.这是一个协议
@protocol NSObject
Run Code Online (Sandbox Code Playgroud)
// 2.这是一个符合上述协议的接口
@interface NSObject <NSObject> {
...
Run Code Online (Sandbox Code Playgroud)
// 3.下面"()"的含义是什么?NSCoderMethods是一种协议
@interface NSObject (NSCoderMethods)
Run Code Online (Sandbox Code Playgroud)
NSObject非常重要,我需要理解,为什么它是这样设计的?
1.
它是一个类(接口),因为ObjC中的所有具体类现在都从NSObject继承实现,以支持引用计数和运行时类型检查等功能.
2.
现在对于协议......它的存在是因为NSObject不是唯一支持-retain和-performSelector:etc方法的根类.
一个重要的类是NSProxy,它充当代理以将消息转发到某些实际对象.
NSProxy的目标通常是NSObjects,所以接口也应支持-retain和-performSelector:等方法.但是,因为没有NSProxy不能从NSObject的继承is-a的两者之间的关系.
为了表达兄弟关系,两者都采用相同的协议,不幸的是,它也称为NSObject.
使NSObject成为协议还有一个优点,即用户定义的协议可以请求采用者支持所有常见的NSObject操作
@protocol Foo <NSObject>
...
Run Code Online (Sandbox Code Playgroud)
3.
它是一个类别,它为NSObject添加了额外的方法实现.
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |