Iphone 如何理解NSObject,它既是协议又是接口

Iphone 如何理解NSObject,它既是协议又是接口,iphone,interface,protocols,nsobject,Iphone,Interface,Protocols,Nsobject,您可以在NSObject.h文件中看到以下内容 //一,。这是一个协议 @protocol NSObject @interface NSObject <NSObject> { ... //二,。这是一个符合上述协议的接口 @protocol NSObject @interface NSObject <NSObject> { ... NSObject非常重要,我需要理解,为什么它会这样设计?1 它是一个类(接口),因为现在ObjC中的所有具体类都从N

您可以在NSObject.h文件中看到以下内容

//一,。这是一个协议

@protocol NSObject
@interface NSObject <NSObject> {
    ...
//二,。这是一个符合上述协议的接口

@protocol NSObject
@interface NSObject <NSObject> {
    ...
NSObject非常重要,我需要理解,为什么它会这样设计?

1

它是一个类(接口),因为现在ObjC中的所有具体类都从NSObject继承实现,以支持引用计数和运行时类型检查等功能


二,

现在是协议。。。它的存在是因为NSObject不是唯一支持
-retain
-performSelector:
etc方法的根类

一个重要的类是,它充当代理将消息转发到一些实际对象

NSProxy的目标通常是NSObject,因此接口还应支持
-retain
-performSelector:
等方法。但是NSProxy无法从NSObject继承,因为两者之间没有is-a关系

为了表示兄弟关系,两个协议都采用了相同的协议,不幸的是,也被称为NSObject

使NSObject成为协议还有一个优点,即用户定义的协议可以通过以下方式请求采用者支持所有常见的NSObject操作:

@protocol Foo <NSObject>
...
@protocolfoo
...

三,


,这为NSObject添加了额外的方法实现。

非常感谢。在Java中,有一个对象,与NSObject非常相似。所有java类都从对象继承。在ObjectC中,需要从NSObject显式继承。