1

我制作了一个应用程序,用于NSStream建立与 telnet 服务器的连接。建立连接后,我发送第一个命令。然后我sleep(1);用来让我的应用程序等待。然后发送第二个命令。

问题是整个 GUI 在sleep(). 我知道这不是“暂停”的“完美”方式,我想学习如何正确地做到这一点。我听说了一些好事,NSTimer但我想有一种具体且“简单”的使用方式,以简单地替换我对sleep().

4

1 回答 1

1

您应该能够使用用于建立连接的任何过程注册某种回调。只需让您的代码等待该回调,而无需执行任何操作。

在这种情况下,使用NSStream,您需要在运行循环上安排流

[stream scheduleInRunLoop:[NSRunLoop currentRunLoop]
                  forMode:NSDefaultRunLoopMode];

运行循环是为您的应用程序处理事件的构造。当您使用sleep()时,它会停止,您的 GUI 无法执行任何操作。通过将流作为输入添加到运行循环,您可以让它们继续工作。

您还必须设置一个委托对象([stream setDelegate:self];例如),该对象将在流有要报告的内容时接收通知。该委托必须实现stream:handleEvent:,它将通过对流的引用和指示发生了什么的代码来调用。

于 2012-05-14T00:17:07.297 回答