【发布时间】:2012-03-16 01:44:03
【问题描述】:
我有一个 Objective-C 类别,我想将它添加到多个类中,而无需复制该类别中包含的代码。我只是想将相同的方法添加到多个类中。
我在 NSManagedObject 子类(Book、Chapter、Page)上有现有的类别,我想以干净且可维护的方式在这些子类中添加通用功能。
一种方法是将类别添加到它们的公共超类(NSManagedObject),但是当我想将方法添加到三个 NSManagedObject 子类(@ 987654327@, Chapter, Page)。
另一个解决方案是继承NSManagedObject 的子类,然后让Book、Chapter 和Page 继承自该NSManagedObject 子类。这是最干净、最直接的方法。这种方法的最大缺点是当数据模型发生变化并且 Xcode 重新生成子类时,它会将它们重置为继承自 NSManagedObject 而不是 SubclassedManagedObject。如果可能的话,我想避免使用类似 mogenerator/Xmo'd 的东西。
是否可以在不重复代码的情况下在多个类上添加单个类别?
谢谢。
【问题讨论】:
-
我并不是要劫持这个问题,但也许这会增加上下文。我有相同的需求(一个类别,多个类),但需要两个非并行类:具有完整实现的具体模型和具有共享动态实现的模型的 NSProxy。由于我希望两者具有相同的接口,因此我需要在
@interfaces 中使用完全相同的属性声明。模型的实现有自定义的 setter/getter,而代理只有@dynamic声明。 -
NM,那太愚蠢了。代理不需要实现,只需要接口。
标签: objective-c ios cocoa-touch cocoa objective-c-category