2015-05-16 34 views
0

在我的iOS應用程序中,我想在用戶打開一個新的ViewController時執行後臺任務。在這個特定的實例中,我處理服務器上的一些圖像,並返回從圖像創建的GIF的URL。NSNotificationCenter Flow - 在IBAction中等待postNotification

在同一個ViewController中,我有一個讓用戶下載GIF的按鈕。我想要設計用於在服務器上仍然創建GIF時嘗試下載GIF的情況。

我現在有它在我的應用程序設置的方式是,我添加了一個監聽器在viewWillAppear中:

[[NSNotificationCenter defaultCenter] addObserver:self selector:nil name:@"generatedGIF" object:nil]; 

然後我處理與方法

[self generateSpinGIF]; 

在後臺GIF然後在generateSpinGIf方法中,我在服務器上創建GIF後發佈通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"generatedGIF" object:self]; 

另外,我有一個IBAction來檢測用戶點擊按鈕下載GIF的時間。此時,我想要下載GIF(如果它已經存在)或等待後臺進程完成。

執行此操作的方法是什麼?

回答

0

不使用通知,而是在視圖控制器的成員變量中創建一個gcd隊列。使用dispatch_async創建GIF。當用戶點擊按鈕時,在同一隊列中使用dispatch_sync來檢索GIF。如果GIF已經存在,dispatch_sync將立即執行。如果創建過程尚未完成,它將會阻止,直到創建完成。