2011-08-25 54 views
1

使用變量參數編號重載init方法的正確方法是什麼?我在做它:使用變量參數編號重載初始化參數

- (id)initWithInt:(int)a 
{ 
    return [self initWithInt:a andString:nil]; 
} 


-(id)initWithInt:(int)a andString:(NSString*)str 
{ 
    self = [super init]; 
    if (self) { 
     NSLog(@"%@ %i",str,a); 
    } 

    return self; 
} 

它的工作原理,但return [self initWithInt:a andString:nil];看起來不正確,我(還有目前沒有自我,對吧?)

回答

3

不,這是完全合法的。 Self已經設置好了,重新指派自我的習慣用法是針對兩種不同的邊緣情況(初始化失敗,初始化器想要返回不同的實例,然後是分配的實例等)。

+2

只是爲了澄清「目前沒有自我」聲明,「self」確實存在,因爲它是'alloc'返回的對象。但是,不能保證'self'在初始化之前處於有效狀態,所以期望調用其他方法會崩潰/失敗,並且期望所有的ivars都將爲零內存。 –