sky*_*erl 18 iphone objective-c calayer retain
每当我将视图控制器推到我的堆栈上,然后将其弹出,我收到此错误:
*** -[CALayer retainCount]: message sent to deallocated instance <memory address>
Run Code Online (Sandbox Code Playgroud)
它似乎发生在dealloc正在弹出的视图控制器上调用之后,并且仅对此视图控制器是独占的.我确定CALayer与视图本身有关,因为我不使用它们.
有任何想法吗?
编辑:这是回溯
(gdb) bt
#0 0x01fcd3a7 in ___forwarding___ ()
#1 0x01fa96c2 in __forwarding_prep_0___ ()
#2 0x01fc10e8 in CFGetRetainCount ()
#3 0x01cbc770 in CA::release_root_if_unused ()
#4 0x01cbc707 in x_hash_table_remove_if ()
#5 0x01cbc4ec in CA::Transaction::commit ()
#6 0x01cc4838 in CA::Transaction::observer_callback ()
#7 0x01fa5252 in __CFRunLoopDoObservers ()
#8 0x01fa465f in CFRunLoopRunSpecific ()
#9 0x01fa3c48 in CFRunLoopRunInMode ()
#10 0x027dd615 in GSEventRunModal ()
#11 0x027dd6da in GSEventRun ()
#12 0x0057cfaf in UIApplicationMain ()
#13 0x00002dec in main (argc=1, argv=0xbfffeed0)
Run Code Online (Sandbox Code Playgroud)
小智 12
我有类似的问题; 结果我没有正确地保留UIButton.我是如何找到原因的: - 启用僵尸 - 使用'Allocations'工具运行项目 - 使用应用程序触发错误 - 检查Instruments在时间线上显示消息'Zombie Messaged' - 应该有一个链接打开CALayer详细信息:当它被分配和解除分配时 - 你对分配的地方感兴趣,应该是那个啊哈!放在你的代码中
祝好运!
这有点棘手,我的是在一个类(m/xib)的dealloc函数中的双重释放,我在tableview中作为行样式.仪器没有对这个对象有太多的了解,但检查callstack 确实有助于确定哪个类是-1.
