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



我已经在iOS应用程序上工作了一段时间,它几乎可以提交了。但是,当我把它交给几个人进行测试(运行iOS 5)时。他们报告了应用程序崩溃并且主屏幕显示在手机上或出现冻结的应用程序屏幕没有任何响应的情况

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

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

同样,声明了其他属性。任何人都可以提供解决方案吗?它主要是一个基于网络的应用程序,因此,CoreData的使用量是最低的。

PS:该应用程序在模拟器中不会崩溃,所以我猜它与内存有关。而且崩溃是随机的。因此,重复一组步骤来重现崩溃也无济于事。例如。当我单击一个按钮时,modalViewControllerAnimation在正常情况下产生结果。现在,这在大多数情况下按预期发生,其他时间会冻结应用程序。

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

界面生成器出口属性应weak,以便它们在发布后变为nil

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

试试这个:

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

最新更新