我们知道在 Objective-C 中有两个主要的根类:NSObject
和 NSProxy
。还有其他根(主要用于私有(private)和遗留用途),如 Object
和 NSLeafProxy
。
定义一个新根相当简单:
@interface DDRoot <NSObject>
@end
@implementation DDRoot
//implement the methods required by <NSObject>
@end
我的问题是:您为什么要定义一个新的根类?是否有一些必要的用例?
最佳答案
创建新根类有两个主要原因;代理和新的对象模型。
代理时,实现一个新的根类很有用,这样您就可以基本上以自定义方式处理任何和所有类/对象的行为。请参阅 NSProxy。
Objective-C 运行时非常灵活,您可以非常轻松地支持新的对象模型(其中轻松首先降低了创建这种野兽的固有复杂性)。实际上,许多被认为是运行时固有的行为——KVC、KVO 等——是作为 NSObject
的一部分实现的。类本身。
我知道至少有一家公司——至少在大约 8 年前——已经实现了自己的对象模型,作为构建其约 500k LOC 财务分析引擎的一部分。
不过,关键是如果你走这条路,你不要尝试让你的类与 Foundation/CF/AppKit/UIKit 等交互。如果你需要 那,只是子类化 NSObject 了!
有趣的是 NSManagedObject
实际上是一个根类,因为它做了一些非常严肃的定制工作,但它是 NSObject
的子类。所以 NSManagedObject
的子类与系统的其余部分可互操作。
关于objective-c - 定义新的根类有哪些用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4295317/