访问刚创建的UIViewController视图时的SIGABRT

时间:2013-02-22 18:20:40

标签: ios uiviewcontroller

我有下一个代码:

- (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时,它就会被创建。这段代码在我的更改之前确实有效(只有按钮和标签可见性,没有什么特别之处),现在它在SIGABRT上抛出self.view,看起来它无法创建。突然。如果我恢复我的改变,所有工作都像魔术一样。即使我不打电话给这个功能,它也会在演示时崩溃,在摘要中它会显示view = 0x00000000

我只有一个问题:WAT?

1 个答案:

答案 0 :(得分:0)

我发现了错误。

在XCode的“重构”(重命名一些IBOutlets)之后,旧的网点标有!标记但未被删除,XCode没有告诉我任何内容。

我的意思是! - s,是Interface Builder显示带有图标的无效插座。无效的出口意味着您在视图和不存在的属性/实例变量之间建立了连接。因此,当NIB将在运行时加载时,应用程序将崩溃,因为没有这样的属性/实例变量。

!-mark in IB

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