应用程序崩溃尽管启用了ARC

时间:2012-06-23 09:13:08

标签: objective-c ios debugging automatic-ref-counting

我已经在iOS应用程序上工作了一段时间,它几乎准备提交了。然而,当我把它交给少数人用于测试目的(运行iOS 5)时......他们报告了应用程序崩溃并且主屏幕显示在手机上的情况或者出现了冻结的应用程序屏幕而没有任何响应

该应用已启用ARC,Xcode未显示任何警告。所以,我对于出了什么问题感到紧张。我已按以下方式声明属性:

@property (nonatomic) IBOutlet UILabel *devCountLabel;

@property (nonatomic) IBOutlet UIView *splashView;

同样宣布其他属性。谁能提供解决方案?它主要是基于网络的应用程序,因此CoreData使用率最低。

PS:应用程序在模拟器中没有崩溃,所以我猜它有与内存有关的东西。崩溃是随机的。因此,重复一系列步骤来重现崩溃也无济于事。 对于Eg。当我单击一个按钮时,modalViewControllerAnimation会导致正常情况。现在大部分时间都会出现这种情况,并在其他时间冻结应用程序。

1 个答案:

答案 0 :(得分:3)

崩溃日志会有所帮助,但这是我的猜测:

Interface Builder Outlet属性应为weak,因此它们在发布后会变为nil

在您的代码中,它们的语义为assign(默认情况下,因为您只编写了nonatomic),它用于基本类型。当它被释放时,你会得到一个悬空指针,当你使用它时,应用程序会崩溃。

试试这个:

@property (weak, nonatomic) IBOutlet UILabel *devCountLabel;
@property (weak, nonatomic) IBOutlet UIView *splashView;