碰到objc_release

时间:2014-09-18 16:04:11

标签: objective-c cocoa

我在objc_release上遇到了一个奇怪的崩溃。该程序已经与仪器分析,记录所有分配。程序尝试访问的无效地址不会记录在任何地方。我认为原因是没有NSZombie对象出现。

我没有使用autoreleasepool进行自己的分配。

我知道如何追溯问题的根源吗?

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000114208650

VM Regions Near 0x114208650:
    Stack                  00000001140ba000-000000011413c000 [  520K] rw-/rwx SM=COW  thread 11
-->
    MALLOC_LARGE           00000001144ba000-0000000114d2f000 [ 8660K] rw-/rwx SM=PRV

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libobjc.A.dylib                 0x00007fff8a3280e6 objc_release + 22
1   libobjc.A.dylib                 0x00007fff8a32765a (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 502
2   liboainject.dylib               0x00000001083da2c8 __oa__objc_autoreleasePoolPop + 123
3   com.apple.CoreFoundation        0x00007fff90beb9e2 _CFAutoreleasePoolPop + 50
4   com.apple.Foundation            0x00007fff88c05e17 -[NSAutoreleasePool drain] + 147
5   com.apple.AppKit                0x00007fff8e0dba68 -[NSApplication run] + 725
6   com.apple.AppKit                0x00007fff8e0c67a3 NSApplicationMain + 940
7   com.xxxx.xxxxxxx                0x0000000108102ea2 main + 34 (main.mm:5)
8   com.xxxx.xxxxxxx                0x00000001080e9a84 start + 52

1 个答案:

答案 0 :(得分:0)

问题:我在动态加载的库中继承了NSView。

解决方案:在运行时(使用objc运行时)创建子类,并为其指定唯一名称。丑陋的代码,但它的工作原理。

相关问题