gpt4 book ai didi

objective-c - initWithNibName 如何工作?

转载 作者:行者123 更新时间:2023-11-28 18:39:37 26 4
gpt4 key购买 nike

我过去常常以编程方式创建我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com