【问题标题】:NSNotificationCenter Flow - Wait for postNotification in IBActionNSNotificationCenter Flow - 在 IBAction 中等待 postNotification
【发布时间】:2015-05-16 12:30:59
【问题描述】:

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

在同一个 ViewController 中,我有一个按钮可以让用户下载 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 已经存在,我想下载它,或者等到后台进程完成。

实现这个的方法是什么?

【问题讨论】:

    标签: ios objective-c nsnotificationcenter


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      相关资源
      最近更新 更多