NSNotificationCenter流程 - 等待IBAction中的postNotification

时间:2015-05-16 01:10:18

标签: ios objective-c nsnotificationcenter

在我的iOS应用中,我想在用户打开新的ViewController时执行后台任务。在这个特定的实例中,我在服务器上处理一些图像并返回从图像创建的GIF的URL。

在同一个ViewController中,我有一个允许用户下载GIF的按钮。我想设计用户在服务器上创建GIF时尝试下载GIF的情况。

我目前在我的应用中设置的方式是在ViewWillAppear中添加一个监听器:

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

然后我用方法

在后台处理GIF
[self generateSpinGIF];

然后在方法generateSpinGIf中,我在服务器上创建GIF后发布通知:

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

另外,我有一个IBAction来检测用户何时点击按钮下载GIF。此时,我想要下载GIF(如果它已经存在)或等到后台进程完成。

实现此目的的方法是什么?

1 个答案:

答案 0 :(得分:0)

不是使用通知,而是在视图控制器的成员变量中创建gcd队列。使用dispatch_async创建GIF。当用户点击按钮时,在同一队列上使用dispatch_sync来检索GIF。如果GIF已存在,则dispatch_sync将立即执行。如果创建过程尚未完成,它将一直阻止,直到创建完成。