我的每个NSManagedObject
子类都有一个类别,工厂方法位于其中,因此在自动重新生成类文件时它们不会丢失。这样我就不需要知道NSManagedObject
我在运行时使用的是哪个子类,每个子类的工厂方法都具有相同的名称,例如
+ (id)objectWithInfo:(NSDictionary *)info inManagedObjectContext:(NSManagedObjectContext *)context;
(为了清楚起见,在此示例中,假设有一个派生自NSManagedObject
被调用的实体Item
,具有生成的文件 Item.m 和 Item.h,以及我自己的具有文件 Item+Factory.m 和 Item+Factory.h 的类别,上面的方法所在的位置)。
在 Xcode 4.3 中,这不会产生警告:但 Xcode 4.4(及更高版本将其标记为警告:
(null): ...Item+Factory.o 类别中的元方法“objectWithInfo:inManagedObjectContext:”与另一个类别中的相同方法冲突
现在,我很清楚在类别中重载方法的危险,这是一件坏事。然而,我在这里所做的只是将对象视为比它们更一般的类,据我所知,这是明智的。
难道我做的不好?还是有不同的方法来声明我的方法来删除警告?