【发布时间】:2009-03-02 13:51:50
【问题描述】:
我想在一个类中编写一些方法,以便其他类可以使用[instance methodName:Parameter]调用这些方法。
如果类是UIViewController的子类,我可以使用initWithNibName来初始化它。但是我想在NSObject的子类中编写方法,我该如何初始化呢?
【问题讨论】:
标签: iphone initialization class-design subclass
我想在一个类中编写一些方法,以便其他类可以使用[instance methodName:Parameter]调用这些方法。
如果类是UIViewController的子类,我可以使用initWithNibName来初始化它。但是我想在NSObject的子类中编写方法,我该如何初始化呢?
【问题讨论】:
标签: iphone initialization class-design subclass
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 在未来不会改变;也不是您的自定义类派生自的超类。
【讨论】:
我发现这可能有效:
TheClass *newObject = [[TheClass alloc] init];
//do something here
[newObject release];
【讨论】: