2009-03-02 109 views
18

我想在類中編寫一些方法,以便其他類可以使用[instance methodName:Parameter]調用這些方法。如何在iPhone上初始化NSObject的子類?

如果該類是UIViewController的子類,我可以使用initWithNibName來初始化它。但我想寫一個NSObject的子類中的方法,我該如何初始化它?

回答

-2

我覺得這可能工作:

TheClass *newObject = [[TheClass alloc] init]; 
//do something here 
[newObject release];
+1

這就是簡單地將對象「newObject」初始化爲TheClass類。如果TheClass沒有使用「[super init]」和「return self」實現「 - (id)init」,那麼您的初始化可能會失敗。 – Klompengard 2015-02-04 18:30:05

57

iphony是正確的,但他或她沒有說,你需要自己寫的init方法。你的init方法通常應該是這個樣子:

- (id) init 
    { 
    if (self = [super init]) 
     { 
     myMember1 = 0; // do your own initialisation here 
     myMember2 = 0; 
     } 
    return self; 
    } 

雖然apple documentation

在NSObject類中定義的init方法確實沒有初始化;它只是返回自我。

和一個剛好可以想寫

- (id) init 
    { 
    myMember1 = 0; // do your own initialisation here 
    myMember2 = 0; 
    return self; 
    } 

這是錯誤的,而不是下面的什麼是文件明確指出:

在這個(INIT)方法的自定義實現,你必須調用super的 指定的初始值設定項,然後初始化並返回新的對象。

必須。不應該,應該,等等。

你不應該假設NSObject的init在將來不會改變;也不是您的自定義類派生的超類。

+0

是否需要[super init]?因爲NSObject的init方法的文檔說不是。 – santhu 2014-07-09 04:24:43