ARC错误:init方法必须返回与接收器类型相关的类型[4]

Chr*_*zzz 8 initialization ios automatic-ref-counting

ARC下的这段代码有什么问题?我得到以上错误:

- (Moment *)initMoment:(BOOL)insert {

if (insert) {
    self.moment = [NSEntityDescription insertNewObjectForEntityForName:@"Moment" inManagedObjectContext:self.managedObjectContext];
  } else {
    self.moment = [NSEntityDescription insertNewObjectForEntityForName:@"Moment" inManagedObjectContext:nil];
  }
return self.moment;
}
Run Code Online (Sandbox Code Playgroud)

tac*_*cos 9

init在问题中发布的方法是错误的形式.该init方法应该(通常)具有以下形式:

-(id)initWithParams:(BOOL)aBoolParam {
    if (self = [super init]) {
        //do stuff
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码的问题是它是作为一个类方法完成的,所以如果海报想要这样做,他必须做moment = [[Moment alloc] init]并返回它.