得到错误“ - [NSThread threadDictionary]:发送到释放实例消息”

问题描述:

编写代码到我的项目之后的某个时间,我注意到调试器会暂停我的应用程序,并在控制台把lldb,不能让我继续。我使用NSZombies,我收到了这条消息:“-[NSThread threadDictionary]: message sent to deallocated instance”。我环顾四周,但找不到任何帮助造成这种情况。当我打印回溯时,我得到:得到错误“ - [NSThread threadDictionary]:发送到释放实例消息”

thread #17: tid = 0x7886f, 0x0000000180f7ab40 CoreFoundation`___forwarding___ + 700, stop reason = EXC_BREAKPOINT (code=1, subcode=0x180f7ab40) 
frame #0: 0x0000000180f7ab40 CoreFoundation`___forwarding___ + 700 
frame #1: 0x0000000180e78c5c CoreFoundation`_CF_forwarding_prep_0 + 92 
frame #2: 0x00000001860536dc UIFoundation`+[NSStringDrawingTextStorageSettings threadSpecificStringDrawingTextStorageSettings:] + 64 
frame #3: 0x000000018604900c UIFoundation`+[NSString(NSStringDrawing) typesetterBehavior] + 32 
frame #4: 0x000000018604a6d4 UIFoundation`__NSStringDrawingEngine + 244 
frame #5: 0x000000018604a4d0 UIFoundation`-[NSString(NSExtendedStringDrawing) drawWithRect:options:attributes:context:] + 176 
frame #6: 0x00000001860eb564 UIKit`-[UILabel _drawTextInRect:baselineCalculationOnly:] + 3856 
frame #7: 0x000000018615e8f0 UIKit`-[UILabel drawTextInRect:] + 544 
frame #8: 0x000000018615e678 UIKit`-[UIView(CALayerDelegate) drawLayer:inContext:] + 368 
frame #9: 0x0000000183a92230 QuartzCore`-[CALayer drawInContext:] + 260 
frame #10: 0x0000000183a7c8b4 QuartzCore`CABackingStoreUpdate_ + 2432 
frame #11: 0x0000000183b94360 QuartzCore`___ZN2CA5Layer8display_Ev_block_invoke + 52 
frame #12: 0x0000000183a7ba90 QuartzCore`CA::Layer::display_() + 1368 
frame #13: 0x0000000183a5d7b0 QuartzCore`CA::Layer::display_if_needed(CA::Transaction*) + 228 
frame #14: 0x0000000183a5d49c QuartzCore`CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 44 
frame #15: 0x0000000183a5cac0 QuartzCore`CA::Context::commit_transaction(CA::Transaction*) + 252 
frame #16: 0x0000000183a5c820 QuartzCore`CA::Transaction::commit() + 500 
frame #17: 0x0000000183a8bbd4 QuartzCore`CA::Transaction::release_thread(void*) + 236 
frame #18: 0x0000000180bda1e0 libsystem_pthread.dylib`_pthread_tsd_cleanup + 584 
frame #19: 0x0000000180bd9d58 libsystem_pthread.dylib`_pthread_exit + 136 
frame #20: 0x0000000180bd953c libsystem_pthread.dylib`_pthread_wqthread + 1296 
frame #21: 0x0000000180bd9020 libsystem_pthread.dylib`start_wqthread + 4 

任何帮助找出发生了什么将会极大地帮助!

+1

我的猜测:你正在做的事情,导致在后台线程UI更新。我建议检查你的代码,并确保任何接触UI元素的东西都移到主线程中。 –

发现了问题是我有一个弱引用的标签。我隐藏了很长时间,似乎垃圾收集已清理干净。所以当我试图向它发送数据时,它已经是dealloc。

某处你调用任何类和类对象的实例方法是零。

+1

发送到零即可。发送到已解除分配的非零引用不是。 – Avi