如何在iPhone上初始化NSObject的子类?

问题描述:

我想在类中编写一些方法,以便其他类可以使用[instance methodName:Parameter]调用这些方法。如何在iPhone上初始化NSObject的子类?

如果该类是UIViewController的子类,我可以使用initWithNibName来初始化它。但我想写一个NSObject的子类中的方法,我该如何初始化它?

我觉得这可能工作:

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

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