gpt4 book ai didi

objective-c - 等待 NSStream 响应时替换对 sleep 的调用

转载 作者:行者123 更新时间:2023-12-03 17:14:40 26 4
gpt4 key购买 nike

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

问题是整个 GUI 在 sleep() 期间卡住了。我知道这不是“暂停”的“完美”方式,我想学习如何正确地做到这一点。我听说过 NSTimer 的优点,但我希望有一种具体且“简单”的使用方式,以取代我对 sleep() 的糟糕使用。

最佳答案

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

在这种情况下,使用NSStream,您需要 schedule the stream on the run loop :

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

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

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

关于objective-c - 等待 NSStream 响应时替换对 sleep 的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10576218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com