2

我已经使用我的 3G 设备开发了我的应用程序进行测试。在把它交给朋友测试后,他注意到它崩溃了。我查看了崩溃日志,但除了几次内存警告后的“EXC_BAD_ACCESS”语句之外,它并没有多大用处。

在我的设备上,我可以大量使用 imagePicker,每次拍照时都会收到内存警告,但这不会导致任何问题。

在我朋友的设备(也是 3G)上,从相机中选择了几张图像后,应用程序崩溃了。

所以,我的问题是..我认为由于内存警告而正在释放某些东西-但仅在我朋友的设备上,然后在释放后,它正试图再次使用。如何找出正在调用的对象?我不能使用 NSZombies,因为这是一个远程(测试版)设备。

请帮忙!

另外,如果有人有任何想法,为什么我的设备可以在没有任何问题的情况下一个接一个地选择图像,而他却不能......那将是最有帮助的

谢谢!

编辑:新发现..我也收到此错误消息:KERN_PROTECTION_FAILURE 我理解这与数据访问有关。崩溃似乎发生在我保存从 UIImagePicker 获取的图像之后。有任何想法吗?

4

2 回答 2

3

你可能过度释放某些东西。如果您正在运行 Snow Leopard,请运行静态分析器 (Cmd-Shift-A) 并查找内存错误。

它在内存错误后崩溃的事实表明 UIViewController 已经释放了它的视图。您是否有任何 UIViewControllers 观察 NSNotifications,或者在屏幕外时可能会更改它们的 IBOutlets?这是此类崩溃的常见原因。确保您正确地管理您的 IBOutlets 内存。UIViewControllers 不应该在它们离开屏幕时弄乱它们的 IBOutlets(或它们的 UI 组件)。即使您没有犯此错误,如果您没有按照上面链接中的说明执行操作,您仍然可能在内存警告后崩溃。

MemoryWarning was a pretty good idea, and things have improved, but Apple still hasn't quite cooked all the issues around how it plays with UIViewController. The developer still needs to be very careful.

于 2010-01-07T23:11:39.950 回答
0

您应该让您的朋友来到您的计算机并使用 NSZombieEnabled 运行它。这是调试这些问题的最佳方式。

于 2010-01-07T22:50:21.520 回答