如何检查" readerDidFinish"委托类中的方法没有忙等待?

时间:2014-04-02 18:45:42

标签: ios objective-c

首先,我承认在Objective-C和Xcode方面我有点像菜鸟,但我已经阅读了很多Apple的入门文档和教程。话虽这么说,我真的不确定如何处理这个看似基本的API查询问题。

我正在开发一个iPhone应用程序,我使用外部库来调用API。结果由自定义委托类处理,这是实现这些方法所必需的:

readerDidStart
readerDidFinish

我可以将API调用的结果存储在我的自定义委托类中,没有任何问题。问题是我需要等到readerDidFinish委托方法被调用才能访问它们。

我的问题:有效处理这种情况的最佳方法是什么?我猜我会在readerDidFinish方法实现中更新我的UI,但我不确定Apple库中是否存在处理此问题的内容

2 个答案:

答案 0 :(得分:1)

视图控制器也是委托吗?在这种情况下,您可以在readerDidFinish方法中进行UI更新。请记住始终在主线程中更改UI。

如果委托是一个单独的类(不是视图控制器),那么您可能希望使用NSNotification实现一个观察者模式。

您可以继承NSNotification并在调用readerDidFinish方法时触发它。

视图控制器应在viewWillAppear中将自身添加为观察者,并在viewWillDisappear中将其自身移除。

以下是Mattt Thompson对通知的非常好的介绍:http://nshipster.com/nsnotification-and-nsnotificationcenter/

如果您需要更多帮助,请发布一些代码。

答案 1 :(得分:1)

这两个代表方法是1种类型的"回叫函数"第三方库调用以让您的应用知道这些事件。只需实现这两种方法。

没有有效的解决方案,你的app应该等到两个事件都被调用。

如果您不希望自己的用途触及任何UI项目,可以使用进度视图来绘制多刺的圆形物品。我喜欢SVProgressView。