![]() |
1
8
据我所知,应该没有理由创建自己的根类,因为除了实现
除非你真的必须实现与默认协议不同的协议(
我就是这么想的。也许有人能想出一个有创意的方法。 (研究这个话题的人应该去看看 NSObject Class Reference , NSObject Protocol Reference , 'Core Competencies: Root Class' document ,以及 Fundamentals Guide: Cocoa Objects document .) |
![]() |
2
12
创建新的根类有两个主要原因:代理新的对象模型。 当代理时,实现一个新的根类是很有用的,这样您就可以基本上以自定义的方式处理类/对象的任何和所有行为。见NSProxy。
ObjyE-C运行时足够灵活,可以很容易地支持新的对象模型(在哪里)
容易地
打折创造这种野兽的内在复杂性。实际上,许多被认为是运行时固有的行为——KVC、KVO等。。--作为
我知道至少有一家公司——至少在大约8年前——已经实现了他们自己的对象模型,作为构建其约50万LOC财务分析引擎的一部分。 但关键是,如果你走这条路,你 不要 如果需要,尝试使您的类与Foundation/CF/AppKit/UIKit等交互 那个 ,只是NSObject的子类已经存在!
有趣的是注意到
|
![]() |
3
5
Objective-C和Cocoa是分开的,原则上可以定义不使用Foundation的全新应用程序框架。bbum提到的财务分析是一个实际的例子,我相信他们还在。
另一个用途是生成一个比
哦,还有私人
|
![]() |
4
1
像OmniGroup这样的公司已经定义了NSObject的一个版本,作为它们自己的基类来使用。 它本质上是NSObject的一个子类,包含一些调试内容。除此之外,与框架抗争通常是个糟糕的主意。 在此处查找Omni代码: https://github.com/omnigroup/OmniGroup |
![]() |
Martin sku · 在目标C中打印时间 3 年前 |
![]() |
Vinod prajapat · 如何更新数组的最后一个元素? 3 年前 |
![]() |
subin272 · 修复iOS中的多个按钮单击事件? 7 年前 |
![]() |
James Chan · 如何使用锁定/解锁? 7 年前 |
![]() |
Josh F. · NSBundle mainBundle返回零 7 年前 |