我有以下工厂方法。我只是想知道作业是否
self = [NSEntityDescription insertNewObjectForEntityForName:entityName
inManagedObjectContext:[self managedObjectContext]];
是正确的,因为我的类是NSManagedObject的子类
感谢
+ (CBItem *)insertEntityForName:(NSString*)entityName fromXMLElement:(NSXMLElement*)xmlElement withQueryType:(CBSearchQueryType)queryType inContext:(NSManagedObjectContext *)inContext
...
self = [NSEntityDescription insertNewObjectForEntityForName:entityName
inManagedObjectContext:[self managedObjectContext]];
...
return self;
答案 0 :(得分:2)
不,这不正确。您只能在self
方法中指定init
。对于工厂类型方法,您应该返回一个变量,例如
CBItem* newItem = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:[self managedObjectContext]];
//Other stuff
return newItem;
答案 1 :(得分:0)
self in a class方法(用+而不是 - 声明)引用类对象。虽然,一旦在任何方法中,自我就像一个局部变量。您可以将它重新分配给您想要的任何内容,只要您不希望它继续像通常所说的那样继续行动。所以你所做的事情不会被打破,尽管它可能会让人感到困惑。