如何在iPhone上初始化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在将来不会改变;也不是您的自定义类派生的超类。
+0
是否需要[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