1

我为 iPhone 开发了一个应用程序,一切都很顺利。今天我决定为即将推出的 iOS 7 做准备,并且该应用程序按预期运行,直到我在我的 iPhone 5 上尝试它。每当它崩溃时,它都会抛出一些 exc_bad_access 代码。它不会在模拟器或运行 iOS 6.1 的 iPad 上崩溃。我希望你们能帮助我。

顺便说一句,我每次都会得到不同的 exc_bad_access 代码,但这是其中之一。 http://gyazo.com/43716488eb120e44e74f76cd4d659076

4

1 回答 1

2

您有与线程相关的竞争条件。注意它是如何在线程 7 中崩溃的?竞争条件在不同的硬件上会以不同的方式表现出来,因为时间可能会有很大的不同。

tableView:cellForRowAtIndexPath:是一个必须在主线程上运行的 UIKit 方法。在您的情况下,它在线程 7 上运行,这本身可能就是您的问题的原因。我怀疑您正在执行诸如调用reloadData后台线程之类的操作。

请注意,您还直接访问您的 ivars,而不是使用访问器。这往往会使线程问题更难追踪和管理。您应该始终使用除 in init、 inside of accessors 和 in之外的访问器dealloc

于 2013-09-14T18:04:38.683 回答