2011-06-18 94 views
0

我正在嘗試編寫一個UIToolbar子類並遇到問題。這是我第一次真正嘗試分類任何東西,所以原諒我,如果它是愚蠢的。我無法解決如何從自己內部返回類的實例。 如在自己的內部返回一個類的實例

keyboardToolBar *toolbar; 
@property (nonatomic, retain) keyboardToolBar *toolbar; 
toolbar = [[keyboardToolBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 50) 
-(keyboardToolBar*)initWithFrame:(CGRect)frame{ 

keyboardToolBar *keyboard = [[keyboardToolBar alloc] initWithFrame:frame];<--how can i do this 
//do stuff with keyboard 
return keyboard; 
} 

我認爲以上將在調用初始化它調用init等等的無限循環被卡住,那麼你如何從自己的init方法中返回一個類的實例,或者是有一個更好的做法。

感謝

DARC

回答

1

有很多事情在這裏並不清楚。你想創造便利的方法嗎?在這種情況下,你應該把它keyboardToolbarWithFrame:並執行它喜歡

+ (id)keyboardToolbarWithFrame:(CGRect)frame { 
    return [[[self alloc] initWithFrame:frame] autorelease]; 
} 

注意+跡象表明它是一個類的方法。這會給你一個自動發佈的類的實例。

現在,如果您只是試圖對其超類進行必要的初始化,您可以刪除該方法。它會調用超類'initWithFrame:方法。但通常你自己的實現將是這樣的,

- (id)initWithFrame:(CGRect)frame { 
    self = [super init]; 
    if (self) { 
     // Do your class initializations here. 
    } 

    return self; 
} 
+0

謝謝,第二個選項是我之後,我忘記調用'自我= [超級初始化];' – Darc

相關問題