gpt4 book ai didi

objective-c - 定义新的根类有哪些用例?

转载 作者:太空狗 更新时间:2023-10-30 03:23:14 24 4
gpt4 key购买 nike

我们知道在 Objective-C 中有两个主要的根类:NSObjectNSProxy。还有其他根(主要用于私有(private)和遗留用途),如 ObjectNSLeafProxy

定义一个新根相当简单:

@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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com