4

如何使用如何在objective-C中使用NSRunLoop并等待一些变量改变值?

谢谢

4

2 回答 2

5

我们通常不会在生产环境中使用 NSRunLoop 来等待变量更改。可以使用回调。

但是,在单元测试代码中,我们确实有以下内容:

NSDate *twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0];
    while (!callBackInvoked && !errorHasOccured && runCount-- &&  [[NSRunLoop currentRunLoop]  runMode:NSDefaultRunLoopMode beforeDate:twoSecondsFromNow]) {
        twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0];
    }

代码一直等待,直到调用我们的回调、发生错误或我们等待的 2 秒周期数已经发生。我们使用它来测试进行回调的委托。

正如我所说,我不会在生产代码中这样做。

于 2009-12-07T09:09:52.350 回答
1

您通常不会NSRunLoop直接在代码中使用。

例如,您将创建GUI已包含NSRunLoop在其中的应用程序(使用预定义的应用程序代码模板Xcode)。

这取决于应该更改的变量,您可能将它放在“模型”对象中的某个位置,并且它会被一些甚至像在线到达的数据或链接到 GUI 对象和用户执行的操作的数据所更改。

  • 如果是按钮,您将设置处理程序来调用操作。
  • 如果它是可变的,您将设置 KVC/KVO 来检测更改并调用处理程序。

依此类推,Cocoa将为您处理胶水代码,您只需要设置适当的处理即可执行操作。

您的问题中没有足够的详细信息,我建议您查看Apple 网站上的一些基本教程,以便开发人员了解 Cocoa 中可用的内容。

于 2009-12-07T06:31:58.517 回答