gpt4 book ai didi

iPhone UIViewController init 方法没有被调用

转载 作者:行者123 更新时间:2023-12-03 18:31:04 26 4
gpt4 key购买 nike

我对 iPhone 编程非常陌生,并且遇到了一些奇怪的情况。对于下面的类,init 方法永远不会被调用——我有一个 NSLog 函数,它应该告诉我 init 何时执行。相关代码如下:

@interface MyViewController : UIViewController {
}
@end

@implementation MyViewController
- (id) init
{
NSLog(@"init invoked");
return self;
}
@end

关于我做错了什么有什么想法吗——如果有的话?希望我提供了足够的信息。

谢谢。

最佳答案

如果您使用 Storyboard,将调用 initWithCoder:。引用文件说:

If your app uses a storyboard to define a view controller and its associated views, your app never initializes objects of that class directly. Instead, view controllers are either instantiated by the storyboard—either automatically by iOS when a segue is triggered or programmatically when your app calls the storyboard object’s instantiateViewControllerWithIdentifier: method. When instantiating a view controller from a storyboard, iOS initializes the new view controller by calling its initWithCoder: method instead. iOS automatically sets the nibName property to a nib file stored inside the storyboard.

initWithCoder: 方法不是 .m 文件默认模板的一部分,因此您必须将自己添加到 UIViewController 子类中:

- (id)initWithCoder:(NSCoder *)aDecoder {

self = [super initWithCoder:aDecoder];

if (self) {
// Custom initialization
NSLog(@"Was called...");
}

return self;
}

无需从代码中删除 initWithNibName:bundle:,但无论如何都不会调用它。

关于iPhone UIViewController init 方法没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772182/

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