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

时间:2009-03-02 13:51:50

标签: iphone initialization class-design subclass

我想在类中编写一些方法,以便其他类可以使用[instance methodName:Parameter]调用这些方法。

如果该类是UIViewController的子类,我可以使用initWithNibName对其进行初始化。但是我想在 NSObject的子类中编写方法,我该如何初始化它?

2 个答案:

答案 0 :(得分: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在将来不会改变;也不是自定义类派生的超类。

答案 1 :(得分:-2)

我发现这可行:

TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
相关问题