在 GCD 串行队列上调度和无效 NSTimers 是否安全?

2024-03-02

这样做的正确方法是什么?这NSTimer文档是这样说的:

特别注意事项

您必须从以下线程发送此消息 安装了计时器。如果您从其他人发送此消息 线程中,与计时器关联的输入源可能不会被删除 从其运行循环中,这可能会阻止线程退出 适当地。

Since GCD不能向您保证串行队列将始终在同一线程上运行块,确保您调度并使之无效的正确方法是什么NSTimer在同一个线程上?

EDIT:

根据下面答案的建议,我创建了MSWeakTimer (https://github.com/mindsnacks/MSWeakTimer https://github.com/mindsnacks/MSWeakTimer)这是一个自定义计时器实现,使用GCD可以从任何队列中使用。


你不应该安装NSTimer在 GCD 管理的匿名工作线程上。

使用带有 GCD 的调度计时器源而不是NSTimer,参见调度_源_创建(3)。

NSTimer依赖于当前线程的运行循环,这对于 GCD 队列来说没有意义。有关 GCD 和 runloop API 的更多详细信息,请参阅 WWDC2012 GCD 会议。

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

在 GCD 串行队列上调度和无效 NSTimers 是否安全? 的相关文章

  • 原生插入符位置 macos cocoa

    我希望能够使用 cocoa 或 appleScript 获取 Mac High Sierra 中任何应用程序内的全局插入符位置 我已经使用 NSEvent 来获取键盘和鼠标挂钩 但是有没有办法获取插入符位置挂钩 插入符号与鼠标位置不同 它会
  • 我应该在我的 iOS Objective-C 项目中使用它吗?

    Xcode 中的 构建设置 中的 Mach O 类型是什么 应该设置什么 它有这些选项 可执行文件 动态库 捆绑包 静态库 可重定位对象文件 自从我将其从可执行文件更改为静态库以来 我遇到了错误 Apple Mach O 链接器错误组 我的
  • 检查 UITableViewCell 是否完全可见

    如何检查 UITableViewCell 在屏幕上是否完全可见 不被选项卡或导航栏切断 我可以使用以下代码获取可见单元格 NSArray indexes tableView indexPathsForVisibleRows 但我想排除屏幕中
  • UITableViewCell 内的 UIPageViewController

    嘿我想问如何在 UITableViewCell 内实现 UIPageViewController 我一直在阅读周围的内容 但到目前为止似乎对任何尝试的人都不起作用 我希望得到一些提示 不需要完整的答案 谢谢 目前还不清楚你到底想做什么 但让
  • 将 CFIndex 转换为 NSUInteger?

    我如何转换typedef signed long CFIndex to typedef unsigned int NSUInteger 如果我使用一个可以吗 CFIndex作为类型的参数NSUInteger 我还没有铸造它 编译者似乎也不介
  • iOS - iPhone 8、8 Plus 和 iPhone X 的设备平台字符串/内部模型[重复]

    这个问题在这里已经有答案了 是什么设备平台字符串即将推出的 iPhone 8 iPhone 8 Plus 和 iPhone X 列表 根据内部型号识别设备的列表如下 对于斯威夫特 func devicePlatform gt String
  • TestFlight iOS 应用程序 get-task-allow 问题

    我在 ios 的 testflight 中有一个名为 MapItTrackIt 的应用程序 一切都进展顺利 我刚刚更新到 xcode 5 1 我按照以往的方式构建了该应用程序 相同的配置文件和临时证书 这次 当我尝试上传 IPA 文件时 我
  • 在 iOS 上不显示数字键盘

    根据苹果的文档 http developer apple com library safari documentation AppleApplications Reference SafariHTMLRef Articles InputTy
  • 检测用户何时清除通知中心的通知

    我的应用程序需要知道用户是否使用清除按钮从通知中心删除 清除应用程序通知 是否可以检测用户何时从通知中心删除通知或抓取通知中心上的一组通知 你 即App 无法与NotificationCenter交互 NotificationCenter与
  • ios:如何使用 CGPath 模糊图像?

    我创建了一个 CGPath 区域 如绿色圆圈所示 CGPath区域需要清晰 图像的其余部分将应用模糊或半透明效果 我可以使用以下代码在CGPath内剪切图像 UIGraphicsBeginImageContext view frame si
  • 我可以通过 PresentFeedDialogModallyWithSession 传递给 FBWebDialogs 的完整合法参数集是什么

    我查看了 Facebook 上的示例代码 这里 https developers facebook com docs howtos feed dialog using ios sdk https developers facebook co
  • 在应用程序中全局关闭自动更正

    我想在 iPad 应用程序中禁用文本输入自动更正 无论设备上自动更正的全局设置是什么 有没有一种好的方法可以通过 API 执行此操作 或者我只需要浏览整个应用程序 找到所有文本输入字段 然后单独关闭每个字段的选项 抱歉 您必须检查所有文本字
  • 如何使用自动布局在自定义 UITableViewCell 内动态设置 UITextView 高度

    I have UITableView every tableViewCell is custom Inside my customTableViewCell is a UITextView TextViews frame is pin or
  • 如何在 Xcode 4.2 中创建 Shell 脚本目标?

    我想知道是否有人知道 XCode 4 1 如何创建 shell 脚本 该选项不存在 但在最新版本中可能会被称为其他名称 塔 在导航器中选择您的项目 单击 添加目标 为空目标选择 聚合 添加构建阶段 gt 添加运行脚本 单击构建阶段并编辑运行
  • 如何为移动应用程序创建无密码登录

    我有兴趣在移动应用程序和 API 之间构建某种无密码登录 假设我可以控制两者 动机是必须登录对用户来说非常烦人并且存在安全风险 例如 用户将重复使用现有密码 我希望用户能够立即开始使用该应用程序 我想知道是否有一些可行的技术 例如 在移动设
  • 解包可选值时意外发现 nil - 使用 ALAMOFIRE

    我正在尝试使用 Alamofire 获取 JSON 格式的数据 当我使用一个 URL 时 它工作正常 当我使用另一个 URL 时 我在解包可选值时收到错误 我似乎无法追踪错误来自哪里 我已采取将代码放入 ViewDidLoad 来跟踪错误
  • Facebook iOS 选择好友表空白

    我正在尝试将 选择的朋友 添加到我的 iOS 应用程序中 我设置了登录视图 登录后 我打开朋友选择器 但它显示为空白 我看到带有 完成 和 取消 按钮的表 但表中没有加载任何朋友 IBAction selectFriendsButtonAc
  • 方法调用中的插入符[重复]

    这个问题在这里已经有答案了 我正在阅读本教程 并遇到了这行代码 这让我感到困惑 localSearch startWithCompletionHandler MKLocalSearchResponse response NSError er
  • 了解 React Native 中的默认字体大小

    在过去的几个月里 我一直在开发一个 React Native 应用程序 但有些事情总是让我困惑 而我现在正试图弄清楚它的真相 我正在尝试标准化应用程序中的字体大小 正文 标题等 并且正在努力了解 React Native 究竟从哪里获取默认
  • 从基元创建自定义形状

    我正在尝试通过组合原始形状来创建自定义物理形状 目标是创建一个圆形立方体 合适的方法似乎是初始化 形状 变换 我在这里找到的https developer apple com library prerelease ios documenta

随机推荐

  • Java或C#中工厂设计模式的反思

    我偶然发现了一个词 叫做反思 这是工厂设计模式中常用的功能 我很难理解这个概念 因为我仍在学习如何编程 如何在 C 或 Java 的工厂设计模式中使用反射 谁能给我一个简单的例子 并向我展示您使用反射来实现工厂设计模式的代码 微软提供了这个
  • android 在相机上显示矩形

    您好 我想在相机中显示一个矩形 以便当用户拍摄快照时 只能处理矩形内的区域 知道我该怎么做吗 并且可以通过沿角拖动来调整矩形大小 我没有调用相机应用程序 我正在使用相机 API 您好 我使用本教程解决了问题 see here http ad
  • Android/Java:将任何字符串转换为颜色(十六进制)

    有没有办法像加密 哈希函数一样从 Java Android 中的任何字符串生成颜色 例子 字符串 Home 生成类似 FF1234 的颜色 字符串 Sky 生成类似 00CC33 的颜色 没有随机化 因此 系统将始终为该字符串计算相同的颜色
  • Azure eventhub 多个分区键指向同一分区

    我们正在开发一个多租户应用程序 其中 eventhub 将在不同租户之间共享 我们将在租户之间分配分区 每个租户将在不同的分区上发送消息 我们希望在分区级别对租户进行身份验证 正如 Microsoft 网站上所述 我们根据租户 ID 定义分
  • java swing布局两个组件

    A B
  • getaddrinfo:如果指定了节点名,AI_PASSIVE 以什么方式被忽略?

    引用自规格获取地址信息 http pubs opengroup org onlinepubs 009695399 functions freeaddrinfo html If the AI PASSIVE如果指定了标志 则返回的地址信息应适
  • 检查元素是否包含数组中的任何类

    我有以下要素 div class one two three four five six seven eight div div class one two three four five six seven eight ten div d
  • 如何防止不良项目引用?

    我们使用带有 TFS 的 C 项目作为源代码控制和 CI 构建 我不断发现其他开发人员正在引用来自的程序集 Bin当他们应该使用我们的目录时 目录不正确 Libs文件夹 我们保存第 3 方程序集的地方 作为解决方案构建或 CI 构建 我们也
  • 如何在 vim 中打开旧文件列表中的文件?

    在 vim 中 我可以输入 oldfiles查看我之前编辑过的文件列表 很棒的功能 但现在我想将该列表中的一个或多个文件打开到缓冲区中 我怎样才能做到这一点 一旦您位于列表底部 您应该按 并使用这个 奇怪 的符号发出命令 command l
  • 使用查询范围热切加载相关模型

    说我有一个模型Box其中包含许多小部件 小部件可以是活动的或非活动的 布尔值 这Widget模型有一个可以过滤结果的查询范围 模型 box php class Box extends Eloquent public function wid
  • 在 R 中创建数字同心环递增的矩阵

    我需要在 R 中编写一个函数来创建一个由递增的同心数字环组成的矩阵 该函数的参数是层数 例如 如果 x 3 矩阵将如下所示 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 我不知道该怎么做
  • 在 WooCommerce 电子邮件模板中获取产品名称和描述

    我试图在 WooCommerce 电子邮件模板中发送电子邮件时获取产品描述和产品名称 我能够获取产品 ID order id trim str replace order gt get items 使用此代码 但是当我试图获取它的描述和产品
  • 在 Symfony 应用程序/控制台中启用 Doctrine DBAL 命令

    当使用 Bare Bone Doctrine 和开箱即用的命令行时 有两个命令可用 但在 Symfony 和 Doctrine 中使用时似乎不可用 app console dbal dbal import Import SQL file s
  • MVC3 razor 创建 HtmlButtonExtension 时出错

    我正在尝试使用在我的页面上创建一个自定义 html 按钮this https stackoverflow com questions 5955571 theres no html button public static class Htm
  • oci8、php7 和 Oracle 10.1 兼容性

    我必须从以下版本升级系统php5 6 to php7 2 该系统使用一个oracle 10 1数据库 现在我尝试收集所有信息 但仍然对之间的兼容性感到困惑php oci8 instant client和数据库 我读到 对于 php7 我至少
  • ASCII 码实际上是 7 位还是 8 位?

    我的老师告诉我 ASCII 是一种 8 位字符编码方案 但它仅定义为 0 127 代码 这意味着它可以容纳 7 位 那么难道不能说 ASCII 实际上是一个 7 位代码吗 当说 ASCII 是一个 8 位代码时 我们到底在说什么 ASCII
  • ESP32 上的 Web 服务器:如何自动更新和显示来自服务器的传感器值?

    我在 ESP32 上有一个网络服务器 在该服务器上有一个主页 我想每隔 x 秒自动更新主页上的传感器值 无需用户输入 我无法访问文件系统 该传感器直接连接到 ESP32 传感器值位于我的 C 程序中 存储在变量中并定期更新 变量是全局的 以
  • 使用 lambda 编写枚举函数

    我收到了这个练习 写一个函数enumerate它接受一个列表并返回一个列表 元组包含 index item 对于列表中的每个项目 我的问题是我无法将索引和值插入一个或多个for循环 这是我设法制作的代码 a a b c a b c inde
  • WELD-001409 类型 [EagerBeansRepository] ​​的依赖关系不明确

    我正在尝试将 JSF 应用程序迁移到 CDI 我实施了以下更改 添加一个空的 beans xml 文件到 WEB INF 将 ManagedBean 更改为 Named 将我拥有的所有范围更改为 CDI 范围 会话 视图 请求 将所有 EJ
  • 在 GCD 串行队列上调度和无效 NSTimers 是否安全?

    这样做的正确方法是什么 这NSTimer文档是这样说的 特别注意事项 您必须从以下线程发送此消息 安装了计时器 如果您从其他人发送此消息 线程中 与计时器关联的输入源可能不会被删除 从其运行循环中 这可能会阻止线程退出 适当地 Since