gpt4 book ai didi

ios - 访问刚刚创建的 UIViewController 的 View 时的 SIGABRT

转载 作者:行者123 更新时间:2023-12-01 16:51:46 24 4
gpt4 key购买 nike

我有下一个代码:

- (void)func
{
MyViewController *ctrl = [MyViewController new];
[ctrl doSmth];
[self presentViewController:ctrl animated:NO];
}

//------------

- (void)doSmth
{
CGRect *rect = self.view.frame;
// Do something with rect
self.view.frame = rect;
}

好的,我知道,当 -[UIViewController view]等于 nil然后它正在被创建。这段代码在我更改之前确实有效(只有按钮和标签可见性,没什么特别的),现在它抛出 SIGABRTself.view ,看起来无法创建。突然。如果我恢复我的更改,一切都会像魔术一样工作。即使我不调用此函数,它也会在呈现时崩溃,并且在摘要中它会显示 view = 0x00000000 .

我只有一个问题:WAT?

最佳答案

我发现了错误。

在 XCode 的“重构”(重命名一些 IBOutlets)之后,旧的导出被标记为 !签名但没有被删除,XCode 没有告诉我任何关于它的信息。

我所说的 ! 是什么意思-s,界面生成器用图标显示无效导出。无效导出意味着您在 View 和不存在的属性/实例变量之间建立了连接。所以当NIB将在运行时加载时,应用程序会崩溃,因为没有这样的属性/实例变量。

!-mark in IB

因此,如果您在此类错误中运行,您应该删除 socket ,或者将具有相同名称的属性/实例变量添加到您已将 XIB 链接到的类(通常是文件的所有者)。

关于ios - 访问刚刚创建的 UIViewController 的 View 时的 SIGABRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15030687/

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