gpt4 book ai didi

ios - 在 iOS 中选择适当的多线程技术

转载 作者:行者123 更新时间:2023-12-01 19:14:48 26 4
gpt4 key购买 nike

我对在 iOS 中使用哪个多线程工具来访问服务和根据服务数据更改 UI 感到困惑,

  • 首先我习惯了使用 NSURLConnection 及其委托(delegate),使用 didreceiveresponse、didreceivedata 等委托(delegate)来完成任务
  • 其次,我学习并使用 GCD 从 block 代码
  • 中访问服务并更新 UI
  • 现在我正在学习使用 performSelectorInBackground() 在后台线程中工作

  • 显然对在哪里使用哪个工具感到困惑?

    最佳答案

  • NSURLConnection委托(delegate)调用是从远程服务器接收数据的“老派”方式。此外,在单个类(UIViewController 或其他类)中使用几个 NSURLConnection 实例也不是很舒服。现在最好使用sendAsynchronousRequest..带有完成处理程序的方法。您还可以定义完成处理程序将在哪个操作队列(UI 的主队列或其他后台队列)上运行。
  • GCD 适用于不同的任务,不仅仅是使用 initWithContentsOfURL: 获取远程资源方法。您还可以控制接收 block 的队列类型(并发、串行等)
  • performSelectorInBackground:也是在后台线程中执行方法的“老派”方式。如果您没有使用 ARC,则需要设置单独的自动释放池以避免内存泄漏。它还有一个限制,即不允许给定选择器接受任意数量的参数。在这种情况下,建议使用 dispatch_async .

  • 还有 NSOperationQueueNSOperation及其子类( NSInvocationOperationNSBlockOperation ),您可以在其中在后台运行任务以及在主线程上获取有关已完成任务的通知。恕我直言,它们比 GCD 更灵活,您可以创建自己的操作子类并定义它们之间的依赖关系。

    关于ios - 在 iOS 中选择适当的多线程技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14058478/

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