2012-06-08 49 views
0

我有一個問題,我有一個NSOperation運行在後臺線程中,並在該執行的執行循環中調用performSelectorOnMainThread來執行NSURLRequest,但主線程永遠不會調用來執行該NSURLRequest 。使用NSOperation調用performSelectorOnMainThread

nsoperation的目的是從核心數據實體構建一個json字符串,由於它是一個大對象,可能需要相當長的時間。我通過只傳遞被管理對象的ID和使用不同的託管對象上下文來確保核心數據線程安全,因此不必擔心這一點。

任何意見將不勝感激。

回答

0

確保你的NSOperation初始化函數沒有使用來自錯誤線程的對象,這已經讓我在使用Core Data之前就已經讓我失望了。如果我記得,init函數在主線程中調用,所以當我初始化我的對象上下文並嘗試在main()中訪問它時,它會崩潰後臺線程。它可以通過printing the current thread ID幫助調試以查看代碼的哪些線程部分正在運行。

+0

這裏沒問題,因爲我只傳入init中的managedobjectID,並使用不同的託管對象上下文從後臺線程執行獲取。通過的另一件事是代表。 – stephen

+0

然後我會嘗試檢查委託對象是否還在,並且可能嘗試在主線程上調用選擇器的替代方法,例如dispatch_async() –

相關問題