PerformSelectorInBackground 是否为每次调用生成新线程?

2024-01-07

Does performSelectorInBackground为每个调用生成一个新线程,还是为所有调用(可能排队)共享一个线程(不是主线程)?


每次调用都会创建一个新线程-performSelectorInBackground:withObject:

来自线程编程指南 http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html#//apple_ref/doc/uid/10000057i-CH15-SW13

使用 NSObject 生成线程

在 iOS 和 Mac OS X v10.5 及更高版本中,所有对象都能够生成新线程并使用它来执行其方法之一。 PerformSelectorInBackground:withObject: 方法创建一个新的分离线程,并使用指定的方法作为新线程的入口点。例如,如果您有某个对象(由变量 myObj 表示),并且该对象有一个名为 doSomething 的方法,您希望在后台线程中运行该方法,则可以使用以下代码来执行此操作:

[myObj performSelectorInBackground:@selector(doSomething) withObject:nil];

调用该方法的效果与以当前对象、选择器和参数对象为参数调用 NSThread 的 detachNewThreadSelector:toTarget:withObject: 方法的效果相同。使用默认配置立即生成新线程并开始运行。在选择器内部,您必须像配置任何线程一样配置线程。例如,您需要设置一个自动释放池(如果您没有使用垃圾收集)并配置线程的运行循环(如果您计划使用它)。有关如何配置新线程的信息,请参阅“配置线程属性”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PerformSelectorInBackground 是否为每次调用生成新线程? 的相关文章

随机推荐

  • 关于依赖共享的 Maven 多模块项目组合

    有几个类似的问题 但没有这样的 您如何处理这种情况 典型场景 一个由 8 11 个子项目组成的项目 具有一个父工件 项目和一个主要使用 声明其他项目作为模块的主项目 问题是所有项目 严格 只共享共同的依赖关系 例如testng loggin
  • WebStorm/PhpStorm 对 jsx 中的 React 属性(如 className)发出警告

    我无法删除反应代码中的以下警告 属性className这里是不允许的 PhpStorm 中的警告 未知的 HTML 标记属性无法设置为驼峰式 仅保存小写字母 并且关闭该复选框没有帮助 设置在Languages Frameworks gt J
  • Java基于枚举类型创建对象的方法

    我的班级是这样的 class X class Y extends X class Z extends X 我有每个子类 id class 的枚举 enum Type Y TYPE 1 Y class Z TYPE 2 Z class int
  • 基于 ASP .NET MVC 3 的 Facebook 应用程序:使用默认模型绑定器解析查询字符串数组?

    简而言之 在用户使用 fb request form 控件选择好友后 Facebook 向我的 MVC 3 应用程序传递以下查询字符串 我假设默认模型绑定器会解析查询字符串中的 ids 数组 并将其绑定到以下操作中的 ids 参数 publ
  • JSON.stringify 在我的 Json 对象中添加额外的 \ 和 "" 时出现问题

    您好 我正在使用 Javascript 创建一个带有键和值的对象数组 使用以下代码 ValuesArray push key this attr someattribute value this val 结果我有一个像这样的对象数组 key
  • Rails - 更新单个属性:与自定义操作或带有隐藏字段的表单链接?

    假设我有一个 User 模型 其中 facebook uid 字段对应于用户的 facebook id 我想允许用户取消其 Facebook 帐户的链接 这样做 我需要将此属性设置为零 我目前看到有两种方法可以做到这一点 第一种方法 创建自
  • Magic Suggest - 从 MVC 模型中预先选择多个项目

    我正在寻找一种用多个值填充 Magic Suggest 控件的方法 我正在使用 ASP NET MVC 并希望根据模型中的属性设置这些值 Part 1 Magic 建议支持多个值 A相关问题 https stackoverflow com
  • 单击 jquery 中的单选按钮时显示动态价格的总和

    我的一个与旅游网站相关的项目的处境非常糟糕 我不知道如何计算每位乘客首选房型的总金额 我的数据库中有两名乘客的记录 1 玛吉2 以斯帖 每位乘客的默认价格为 125000 如果用户点击选择自己的房型 则所选乘客的价格为 150000 这是我
  • 如何读取/打印(_io.TextIOWrapper)数据?

    使用以下代码 我想 gt 打开一个文件 gt 读取内容并删除不需要的行 gt 然后将数据写入文件并读取文件以进行下游分析 with open chr2 head25 gtf r as f open test output txt w as
  • 使用 coord_polar() 进行“缩放”/“缩放”

    我有一个使用 geom smooth 的极坐标图 平滑的黄土线非常小 围绕着地块的中心 我想 放大 这样你就能看得更清楚 使用类似的东西scale y continuous limits c 05 7 将使 geom smooth 环变大
  • 如何指定颜色条范围并保持它而不考虑绘图值

    我昨晚打了这个 然后当我准备提交它时我想通了 提交以防其他人需要 我正在底图上绘制多天每小时的气象值 我想为每张地图始终保留相同的颜色条值 假设每个图的范围是 0 10 有时这些值都非常接近于零 而另一些则介于 0 10 之间 for fi
  • 在 Windows Phone 中拖放

    我正在尝试实现拖放功能来排列列表框的内容 我能够拖动该项目 当我尝试将第二个项目拖动到第一个项目时 它会出现在第一个项目上方 但是当我尝试将第一个项目拖动到第二个项目时 第一个项目会出现在第二个项目下方 我也无法赶上掉落 以便我可以安排物品
  • 缩放至适合:嵌入 HTML 中的 PDF

    我正在将本地 pdf 文件嵌入到一个简单的网页中 并且希望设置初始缩放以适合对象大小 这是我尝试过的 但它不影响缩放 有谁知道如何修改代码 以便将其初始缩放设置为适合对象大小 回复有点晚了 但我注意到这些信息很难找到 而且还没有找到答案 所
  • 为什么 scipy 的稀疏 csr_matrix 的向量点积比 numpy 的密集数组慢?

    我遇到一种情况 我需要从稀疏矩阵中提取一行 并用密集行获取其点积 使用 scipy 的 csr matrix 这似乎比使用 numpy 的密集数组乘法慢得多 这让我感到惊讶 因为我预计稀疏点积将涉及更少的操作 这是一个例子 import t
  • 如何在react-router中创建锚标记?

    我在内部使用react boilerplate 3 4 0 和react router来进行路由 我尝试创建一个链接 当我点击它时 我希望滚动到 divid anchor tag 即使我使用 Link 组件而不是 标记 它也只是滚动到页面顶
  • Symfony 3.0.4 使用 FOSRestBundle 序列化期间检测到循环引用

    我在 Symfony 项目中使用 FOSRestBundle 当我尝试处理视图时 在使用 Symfony 序列化器和 JMSSerializer 序列化数据期间失败 这是呈现响应的方法 默认控制器 php em this gt getDoc
  • 将数据写入一行

    我将数据写入 csv 文件 格式如下 789 255 25 33 0 855 275 25 33 0 我希望将其转换为如下格式 1 789 255 25 33 0 2 855 275 25 33 0 所以我想要的就是将列表中的元组转换为一个
  • 创建 WCF Web 服务时出错

    我创建了一个新的 WCF Web 服务 但是当我尝试运行它时 出现此错误 未生成任何代码 如果您尝试生成客户端 这可能是因为元数据文档不包含任何有效的合同或服务 或者因为发现所有合同 服务都存在于 reference 程序集中 验证是否已将
  • SQL 未知与 NULL 相同吗?

    我很困惑 UNKNOWN 在 SQL 中的三值逻辑中意味着什么 它实际上意味着 NULL 吗 NULL 和 UNKNOWN 在所有布尔上下文中是否可以互换 简单回答 3 2 gt FALSE 3 3 gt TRUE NULL 3 gt UN
  • PerformSelectorInBackground 是否为每次调用生成新线程?

    Does performSelectorInBackground为每个调用生成一个新线程 还是为所有调用 可能排队 共享一个线程 不是主线程 每次调用都会创建一个新线程 performSelectorInBackground withObj