-1

我有很多 UIViews(超过 100 个)的 nib 文件,而且我正在使用代码创建 500 多个 UIViews。

仅供参考,应用程序是一种带有块的游戏板。

问题,随机应用程序在玩游戏时在 nib 对象上崩溃。我无法制作测试用例。但我可以说应用程序仅在 Nib 对象(IBOutlet)上崩溃。

每次它仅通过 nib 的 IBOutlet 的不良访问。

我尝试使用保留来制作 IBOutlet 属性。也可以正确合成,但随机遇到相同的问题。

请帮我管理 nib 对象。

确切的错误消息是:EXC_BAD_ACCESS

这是堆栈跟踪

libobjc.A.dylib 0x3995e5aa objc_msgSend + 9
1WWS 0x00064437 0x5a000 + 42039
2WWS 0x00063b5d 0x5a000 + 39773
3Foundation 0x37df7539 + 200
4Foundation 0x37deedb9 + 840
5Foundation 0x37e673db + 102
6libdispatch.dylib 0x370b211f + 10
7libdispatch.dylib 0x370b14b7 + 22
8libdispatch.dylib 0x370b61bd + 224
9CoreFoundation 0x34d57f3b + 1290
10CoreFoundation 0x34ccaebd CFRunLoopRunSpecific + 356
11CoreFoundation 0x34ccad49 CFRunLoopRunInMode + 104
12GraphicsServices 0x3261d2eb GSEventRunModal + 74
13UIKit 0x342a72f9 UIApplicationMain + 1120
14WWS 0x0005b09f 0x5a000 + 4255
4

1 回答 1

0

测试 IBoutlet 是否导致问题的一种方法是断开所有 IBoutlet 视图。在视图 didLoad 方法中实例化它们并尝试运行您的应用程序。如果应用程序仍然崩溃,则认为这是内存问题。

如果应用程序没有崩溃,那么它可能只是 IBoutlet 问题。

另一种方法是使用Instruments工具。

  1. 使用 product -> Analyze 检查代码中的任何内存泄漏。
  2. 运行产品 -> 配置文件 -> 泄漏工具检查运行时泄漏。
于 2012-12-26T12:28:20.237 回答