我想阻塞主線程,直到在後臺完成其他事情。NSOperationqueue我想阻止主線程
我用:
result=[self performSelectorInBackground:@selector(calculate:) withObject:expression];
只是吼叫此行我使用的結果是:
[self use:result];
我不想使用結果,直到它可用。 實現這一目標,我實現
-calculate:
{
[[(AppDelegate *)[[UIApplication sharedApplication] delegate] queue] waitUntilAllOperationsAreFinished];
calculating result...
}
,仍然被計算之前使用它的結果。所以,我沒有阻止主線程。請幫我做到這一點。
謝謝
我按照你所說的方式做了它,但是在「計算」和「使用」之後,它並沒有回到原來的位置。計算的調用是在一個方法內部完成的,該方法被實現爲該視圖控制器符合的協議的一部分。問題是執行使用後,這種方法不再有效:因此'它沒有回到原來的位置'。 – 2010-05-13 21:54:13
那麼它不會回來,因爲'calculate:'在另一個線程上運行。你需要重新設計你的代碼,以便它能夠工作而不會回到原來的地方。這是背景處理的內在本質,你不能與之對抗。 – Yuji 2010-05-13 22:23:06