objective-c - 尽管启用了 ARC,应用程序仍然崩溃

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

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

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

@property (nonatomic) IBOutlet UILabel *devCountLabel;

@property (nonatomic) IBOutlet UIView *splashView;

同样声明其他属性。谁能提供解决方案?它主要是一个基于网络的应用程序,因此 CoreData 的使用最少。

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

最佳答案

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

Interface Builder Outlet 属性应该是weak,所以它们在释放后变为nil

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

试试这个:

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

关于objective-c - 尽管启用了 ARC,应用程序仍然崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11168269/

相关文章:

iphone - 循环计数器 - 最短方法

ios - 如何在iOS中显示来自JSON URL的图像?

ios - 使用 Tesseract OCR 从图像中提取文本并输入到文本字段中

ios - 如何将图像添加到相机覆盖 View (swift4)

javascript - 命中断点时,源映射请求挂起。有没有办法强制预加载?

ios - 如何让 Google-Maps API 正常工作?

ios - Restkit - 删除具有相同 URL 路径的孤立对象

ios - 使用 firebase key 执行以下操作会产生过多的成本吗?

javascript - ESLint 和普通控制台错误有什么区别?

c++ - 将 HEX 转换为可打印的字符串/字符