2013-01-16 83 views
0

我使用帶有兩個選項卡的TabBarController。在第二個我打電話NSOperation,將操作添加到NSOperationQueue。當我選擇第二個選項卡時,我在主線程上調用了該操作。但是,當我切換到第一個標籤的應用程序崩潰。我正確地釋放和取消操作切換標籤欄時NSOperation失敗

我得到BT

#0 0x0243d09b in objc_msgSend() 
#1 0x1299c4a0 in ??() 
#2 0x008b6d23 in -[__NSOperationInternal start]() 
#3 0x008b6a34 in -[NSOperation start]() 
#4 0x00943301 in __block_global_6() 
#5 0x0222753f in _dispatch_call_block_and_release() 
#6 0x02239014 in _dispatch_client_callout() 
#7 0x0222a2e8 in _dispatch_root_queue_drain() 
#8 0x02229fcb in _dispatch_worker_thread3() 
#9 0x99a16b24 in _pthread_wqthread() 
#10 0x99a186fe in start_wqthread() 

請提出解決方案

回答

0

請務必確定NSOperationQueue的所有權下面的消息。另外,請確保在切換選項卡時不會釋放NSOperation所需的所有實例。

您能否展示正在進行實際工作的線程的堆棧跟蹤?

+0

這是我的錯誤,而不是在viewDidDisappear中取消viewwillDisappear中的操作。 – Nassif