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

时间:2011-12-17 22:06:37

标签: ios initialization 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;
}

1 个答案:

答案 0 :(得分:9)

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

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

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