【问题标题】:Strange memory management issue奇怪的内存管理问题
【发布时间】:2010-03-11 00:51:18
【问题描述】:

我无法识别正在释放的对象,我使用 Command+Y 运行我的应用程序,但是尽管将 MallocStackLogging 设置为 YES 并且 NSZombieEnabled 设置为 YES,当我在我的应用程序中点击 EXC_BAD_ACCESS 时,gdb 不会打印内存地址被释放的对象。有什么想法吗?

抱歉,如果这看起来含糊不清,它看起来与核心数据相关,如果有人可以对输出提供有见地的分析,我将非常感激。谢谢

这是崩溃时的堆栈跟踪:

#0  0x933b4edb in objc_msgSend
#1  0x08c46040 in ??
#2  0x01f3c6c9 in __CFSetDeallocate
#3  0x01f23a41 in _CFRelease
#4  0x01dd9977 in -[_NSFaultingMutableSet dealloc]
#5  0x01dcb892 in -[NSManagedObject(_NSInternalMethods) _clearRawPropertiesWithHint:]
#6  0x01dcb5ed in -[NSFaultHandler turnObject:intoFaultWithContext:]
#7  0x01dccd8c in -[NSManagedObject dealloc]
#8  0x01db0315 in -[_PFManagedObjectReferenceQueue _processReferenceQueue:]
#9  0x01ddd9ba in _performRunLoopAction
#10 0x01f65252 in __CFRunLoopDoObservers
#11 0x01f6465f in CFRunLoopRunSpecific
#12 0x01f63c48 in CFRunLoopRunInMode
#13 0x0268b615 in GSEventRunModal
#14 0x0268b6da in GSEventRun
#15 0x002a7faf in UIApplicationMain
#16 0x00002b60 in main at main.m:13

【问题讨论】:

  • 回溯说什么?也许这不是导致错误访问的消息。
  • 谢谢卡尔,也许附加的输出对你有帮助。在我看来像 Core Data 托管对象的问题,但我不确定

标签: iphone objective-c cocoa-touch memory-management


【解决方案1】:

运行 Clang 静态分析器(Xcode 构建菜单 >> 构建和分析)并检查它是否发现任何问题。

昨天我在我的一个应用程序中遇到了“EXC_BAD_ACCESS”问题,我启用了 NSZombieEnabled,但它没有打印消息,所以我被难住了,但静态分析器发现我释放了一个从未保留的对象的问题,并解决了我的问题。

【讨论】:

  • 谢谢谢谢谢谢!我发现了问题,静态分析器突出显示了它。太棒了!
猜你喜欢
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多