1

在将我的项目转换为 ARC 后,我确信这是一个愚蠢的问题。此方法已在第一行开始崩溃:

- (MyView*) loadMyView
{
    NSArray* elements = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];

    return (MyView*)[elements objectAtIndex:0];
}

这在转换为 ARC 之前运行良好。该应用程序在模拟器中崩溃并显示以下消息:

[CFArray release]: message sent to deallocated instance

谁能告诉我我做错了什么?

4

3 回答 3

2

好吧,在睡了之后,我决定删除 Nib 并重新开始看看是否有帮助,果然,它现在可以工作了。我不知道转换为 ARC 会导致这个问题,但删除 Nib 并从头开始重新创建它解决了这个问题。

于 2012-04-06T13:55:26.667 回答
0

我遇到过同样的问题。如果您的 nib 文件中存在不一致,通常会发生这种情况。我的一些按钮仍然通过 IBOutlets 连接到我在头文件中删除的一些对象。希望这可以帮助。

于 2015-03-12T20:03:16.233 回答
0

尝试将owner:参数从更改nilself

NSArray* elements = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];

我猜是因为您将所有者设置为 nil,您的数组正在创建时保留计数为零,因此立即被释放。

于 2012-04-06T05:05:17.970 回答