2011-08-30 44 views
0

我如何确保在Objective-C中,一个函数只被调用,直到另一个函数准备好了?只有调用函数,如果另一个函数准备就绪

更新:

-(void)reloadJsonFromServer { 
    [[Sync sharedObject] synchronise]; 
    [self reload]; 
} 

我有这个功能。 第二个函数“reload”只应该被调用,如果第一个函数是 - 在这种情况下它是一个单例 - 已经准备就绪。就绪意味着,第一个功能不再运行。

+6

是什么意思的功能做好准备? –

+0

您需要在这里提供更多信息。 –

+0

你说得对。我已经添加了更多信息。 – teawithfruit

回答

2

那么你想等待一个异步方法的完成?有很多方法可以做到这一点。

  • 充分利用synchronise方法本身调用reload在对象上,当它完成
  • dispatch_asyncreload方法,并有它只是wait直到其他方法填充您继续之前等待一些标志或数据结构(BOOL synchronised或类似)。请注意,如果您的reload方法对UIKit执行任何操作,那么您需要在主线程上运行它。
  • 更改synchronise的运行方式,因此它不会实际返回给调用方,直到完成同步为止,然后dispatch_async方法为reloadJsonFromServer
  • 变化synchronise如在第三点,但代替使用dispatch_async,同时添加的方法的调用的NSOperationQueue作为NSOperation S,与reload依赖于synchronise完成。操作队列将在此之后处理它。

这些只是少数,我相信其他人可以建议更多。

+0

是的,我想等异步方法,对。问题是,“同步”在Sync类中调用一些其他功能。当我想嵌入一个回调函数时,我遇到了同样的问题,即在Sync类中的其他函数准备就绪之前调用“reload”函数。你的第二点是什么事情?你写了关于标志。 – teawithfruit

+0

是的,第二点是在'reload'方法继续执行它应该做的事情之前,等待一个值被设置(一个事件处理标志或某事)。你'dispatch_async',这样接口仍然可以更新,同时主循环继续进行。 – darvids0n

0

在过去的几天里,我学习了一些关于通知的内容。 我认为这也是一个好方法,来处理这样的事情。欲了解更多关于这个看看这个博客条目的信息。

Custom Events in Objective-C

相关问题