【问题标题】:nib objects gets bad access even though it have been retained by propertynib 对象即使已被属性保留,也无法访问
【发布时间】:2012-12-26 12:01:18
【问题描述】:

我的 nib 文件有很多 UIViews(超过 100 个),而且我正在使用代码创建 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

【问题讨论】:

  • 你能发布完整的错误信息吗?
  • 在访问 IBOutlet 属性时如何确定它是?如果是这种情况,您会收到内存警告吗?
  • 我已经用 stacktrace 编辑了我的问题
  • 我确信 IBOutlet 会导致问题,因为我可以在 xCode 的调用堆栈中看到。 Bad Access 仅出现在 IBOutlets 上。

标签: iphone ios xib nib


【解决方案1】:

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

如果应用没有崩溃,则可能只是 IBoutlet 问题。

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

  1. 使用产品 -> 分析以检查代码中的任何内存泄漏。
  2. 运行产品 -> 配置文件 -> 泄漏工具检查运行时泄漏。

【讨论】:

    猜你喜欢
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多