何时不将NSObject称为父类?

Dev*_*ted 2 class objective-c nsobject

例如:

@interface Fraction: NSObject {
...
Run Code Online (Sandbox Code Playgroud)

何时不NSObject使用,是NSObject所有其他课程的最终父类?

如有任何错误的术语,请随时纠正我.

Pet*_*wis 5

Cocoa有两个根类:NSObject和NSProxy.

NSObject是几乎所有Cocoa对象的根类.

NSProxy是一个抽象超类,它定义了对象的API,这些对象充当其他对象或不存在的对象的替身,并且是NSDistantObject等类的根类.

这两个类都实现了NSObject协议.

也可以编写自己的没有根类的Objective C类,但是你可能永远不会这样做,除非你还实现了NSObject协议,否则你将无法将它与Cocoa一起使用.即便如此,它仍然是可疑的.


NSR*_*der 5

在任何Cocoa应用程序中,如果检查运行时类树,您将找到五个根类:NSObject,Object,NSProxy,NSMessageBuilder和NSZombie.

您应用中的大多数普通对象都来自NSObject.Object是Objective-C早期的原始根类,当NeXT开发Enterprise Objects Framework时,它被NSObject取代.

运行时使用NSMessageBuilder进行消息转发.分布式对象实现使用NSProxy来处理编组消息以发送到其他进程中的对象,甚至是其他主机上的对象. NSZombie是一个用于调试内存泄漏的类.