在init之前调用init,在self = [super init]之前

时间:2015-05-27 13:19:29

标签: objective-c cocoa cocoa-touch

做self = [super init]是一种常见的init模式;应该分配自我指针

但我可以像这样转发init吗?

- (id)initWithObject:(id)object {
    return [self initWithObject:object scrollTo:nil];
}

代码有效,但不确定它是否是Kosher ......以及如何在没有self的情况下工作= [super init]

进一步,这可以吗?

- (id)initWithObject:(id)object {
    self = [self initWithObject:object scrollTo:nil]; // NOT super
    if (self) {
       //...
    }
    return self;
}

3 个答案:

答案 0 :(得分:1)

是的,这很好。我自己做了几次没有问题,我在Apple documentation中找到了一个代码示例(向下滚动到“Multiple Initializers和Designated Initializer”)。

答案 1 :(得分:1)

只有在返回运算符中调用指定的初始化程序或初始化程序才能调用该程序。确保调用指定初始化程序的一种方式或其他方式。

答案 2 :(得分:0)

是的,确定你可以!请注意,initWithObject:scrollTo必须返回一个有效的自我对象。