gpt4 book ai didi

ios - 在 iOS 上使用单独的线程联网

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:50 24 4
gpt4 key购买 nike

我开发的应用程序是一个与 OS X 服务器通信的 iOS 客户端。此应用程序的当前版本在主线程上执行所有网络逻辑,这对我想做的事情来说效果很好。

但是,在下一个版本中,我希望网络逻辑更加灵活。为了让它起作用,我想为其专门开发一个单独的线程,但我不太确定哪种解决方案适合我的需求。

起初,GCD 看起来是个不错的选择,但它似乎只适合在单独线程上执行的大块工作。我想做的是将所有网络逻辑放在一个单独的线程上。 iOS 客户端和 OS X 服务器之间的连接是持久的,所有数据流和处理都应该在那个单独的线程上进行。

问题归结为,哪种方法最适合这种情况?

编辑:为了消除任何混淆,我使用的连接使用套接字和 NSStream 实例。我不处理连接到远程 Web 服务器的问题。换句话说,AFNetworking 和 ASIHttpRequest 不适合我。

最佳答案

  1. 你可以使用runloop创建一个线程(我们称之为NetworkThread),运行如下代码:

    while (!self.isCancelled) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
    [pool release];
    }
  2. 然后您可以使用 - (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait 来执行您的网络NetworkThread 上的请求选择器。

  3. 所有网络回调将在 NetworkThread 上调用,然后在 NetworkThread 上处理您的响应数据,将最终数据推送到主线程,更新 UI。

关于ios - 在 iOS 上使用单独的线程联网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224251/

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