我需要執行大量的計算,每次從我的應用程序調用getter時。從getter返回的數據會根據環境而不斷變化,並且必須進行大量計算來計算應該返回的內容。因此,我不希望getter中的代碼在主線程上運行。這是我迄今爲止:重新計算後臺線程中的getter
@interface Calculator()
@property (nonatomic, strong) dispatch_queue_t calculationThread;
@end
- (dispatch_queue_t)calculationThread {
if (!_calculationThread) {
_calculationThread = dispatch_queue_create("calculation_thread", NULL);
}
return _calculationThread;
}
- (NSArray *)calculation {
// perform calculation in calculationThread, which should not be on main thread and be asynchronous
return arrayContainingCalculations;
}
我基本上想知道如何使用GCD來替換評論。我曾嘗試使用dispatch_queue_t和dispatch_group_notify,但我似乎沒有正確實施它。
異步顧名思義意味着它不會等待你吸氣的代碼返回一個值之前執行。正如Peter所說,您需要爲異步代碼設置某種形式的回調塊或委託。要麼是這樣,要麼你從後臺線程中調用getter。 – Hamish