我过去常常以编程方式创建我的 View ,并且已经开始使用 XIB 文件进行切换。我找到这段代码:
-(id)init
{
self = [super initWithNibName:@"HelpViewController" bundle:nil];
if (self != nil) {
// further initialization needed
}
return self;
}
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
NSAssert(NO, @"Initialize with -init");
return nil;
}
它有效,但为什么呢?如果我遵循逻辑,initWithNibName 返回 nil 并将其设置为 self。所以,self 现在是 nil,然后你在 init 结束时返回 self。嗯,这意味着你返回 self,它是 nil。是吗?
另外,如果我想初始化一个 NSArray,我应该把它放在那个 init 函数的什么地方?
感谢您的解释。
Yko
最佳答案
因为init方法调用了self = [super initWithNibName...]。所以你必须调用init方法来创建对象。如果你使用 initWithNibName 它将失败
对于Array,你应该在init方法中初始化
-(id)init
{
self = [super initWithNibName:@"HelpViewController" bundle:nil];
if (self != nil) {
// further initialization needed
myArray = [[NSMutableArray alloc] init];
}
return self;
}
关于objective-c - initWithNibName 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12902075/