18

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

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

4

2 回答 2

57

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 在未来不会改变;也不是您的自定义类派生自的超类。

于 2009-03-02T18:23:24.487 回答
-2

我发现这可能有效:

TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
于 2009-03-02T14:04:34.343 回答