我想在類中編寫一些方法,以便其他類可以使用[instance methodName:Parameter]
調用這些方法。如何在iPhone上初始化NSObject的子類?
如果該類是UIViewController
的子類,我可以使用initWithNibName
來初始化它。但我想寫一個NSObject的子類中的方法,我該如何初始化它?
我想在類中編寫一些方法,以便其他類可以使用[instance methodName:Parameter]
調用這些方法。如何在iPhone上初始化NSObject的子類?
如果該類是UIViewController
的子類,我可以使用initWithNibName
來初始化它。但我想寫一個NSObject的子類中的方法,我該如何初始化它?
我覺得這可能工作:
TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
iphony是正確的,但他或她沒有說,你需要自己寫的init方法。你的init方法通常應該是這個樣子:
- (id) init
{
if (self = [super init])
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
}
return self;
}
在NSObject類中定義的init方法確實沒有初始化;它只是返回自我。
和一個剛好可以想寫
- (id) init
{
myMember1 = 0; // do your own initialisation here
myMember2 = 0;
return self;
}
這是錯誤的,而不是下面的什麼是文件明確指出:
在這個(INIT)方法的自定義實現,你必須調用super的 指定的初始值設定項,然後初始化並返回新的對象。
必須。不應該,應該,等等。
你不應該假設NSObject的init在將來不會改變;也不是您的自定義類派生的超類。
是否需要[super init]?因爲NSObject的init方法的文檔說不是。 – santhu 2014-07-09 04:24:43
這就是簡單地將對象「newObject」初始化爲TheClass類。如果TheClass沒有使用「[super init]」和「return self」實現「 - (id)init」,那麼您的初始化可能會失敗。 – Klompengard 2015-02-04 18:30:05