gpt4 book ai didi

ipad - 在辅助线程上安排 NSStreams

转载 作者:行者123 更新时间:2023-12-01 05:43:39 27 4
gpt4 key购买 nike

在我正在开发的 iPad 应用程序中,我需要将网络处理放在一个单独的线程上,因为它偶尔会阻塞应用程序的 UI。目前,我已经创建了一个 Connection 对象,所有网络逻辑都在其中进行( NSStreams 及其 delegate 方法)。

主要障碍是如何创建辅助线程和调度NSStreams在这个线程的运行循环中。我是否明确创建了一个 NSThread然后由 Connection 对象拥有?

我一直在试验 NSOperation ,但这似乎不是最好的解决方案,因为我觉得需要一个专门处理网络事件的线程。

欢迎指点和建议。任何示例代码也可能有帮助。

巴特

最佳答案

我喜欢 detachNewThreadSelector ... 方法也是如此,但仅供引用,您可以使用 NSOperationNSOperationQueue .它会将非并发操作扔到单独的线程上。

为了让流继续,你正在看这样的事情:

[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:mode];

绝对可以查看位于 http://developer.apple.com/library/mac/#samplecode/PictureSharing 的 Apple 示例“PictureSharing” .

特别是复制 FileSendOperationFileReceiveOperation类,以及 QRunLoopOperation .我也用 LinkedImageFetcher sample QWatchedOperationQueue类,它可以很好地与 PictureSharing 类配合使用。我把他们的 *SendOperation 和 *ReceiveOperation 类变成了发送/接收我需要的东西(一些 NSData)的类。

然后就这么简单:
 FileSendOperation *op;
op = [[[FileSendOperation alloc] initWithFilePath:somePath outputStream:outStream ] autorelease];

[self.queue addOperation:op finishedAction:@selector(networkingDone:)];

关于ipad - 在辅助线程上安排 NSStreams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784227/

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