在 Objective C (Cocoa) 线程中运行 C 代码(适用于 iOS)

2024-01-02

首先,我是一名非常新的 Objective C/Cocoa iOS 开发人员,但我以前编写过 C/C++ 应用程序。

因此,我设法在我的 iPhone 应用程序中运行 Rabbitmq-c (http://hg.rabbitmq.com/rabbitmq-c/) 客户端,我可以直接从我的应用程序连接到 Rabbitmq,甚至使用队列项。所以一切都好。

现在我的问题是,我的iPhone应用程序需要使用rabbitmq-c库来轮询来自服务器的传入消息。可能会有一个几乎无限的 while 循环。

我必须将其带到新线程吗?理想情况下,我想将rabbitmq-c类包装为异步目标C类,并使用NSNotification(或类似的东西)来通知我的UI。我对创建一个新线程有点怀疑,因为我读到像 Runloop 等东西可以在不使用额外线程的情况下解决很多问题。

对我来说最好的解决办法是什么?任何代码或说明示例都会有所帮助。请记住,我在这里不处理 Objective C 代码/Cocarabbitmq 库,我在我的 iPhone 应用程序中使用 C 代码。

Thanks

Subrat


不要通过服务器轮询阻塞主线程。

由于操作永远不会结束,因此请为此服务器轮询创建自己的线程和运行循环。您可以使用运行循环(每个线程都有一个)而不是无限的 while。替代方案包括定期生成线程。最简单的方法是仅使用一个线程来完成此任务。

一旦有更新,请从主线程发布通知(如果您选择 NSNotification)——UIKit 只能从主线程进行操作。

对于示例,我将从与 NSRunLoop 和 CFRunLoop 相关的示例开始。

祝你好运

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

在 Objective C (Cocoa) 线程中运行 C 代码(适用于 iOS) 的相关文章

  • 连接到 Apple Music

    所以我尝试使用 React Native 应用程序从 iOS 设备连接到 Apple Music 有一个 API 可以执行相同的操作 但我需要从 storekit 框架调用一个函数 提出个性化请求 苹果音乐API https develop
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • insertObject:atIndex 的复杂性:

    复杂度是多少 NSArray insertObject atIndex N 或常数 另外 如何找出各种 Objective C 语句的复杂度 有一个在这里讨论 http www cocoadev com index pl NSMutable
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 使用 GROUP 和 SUM 的 LINQ 查询

    请帮助我了解如何使用带有 GROUP 和 SUM 的 LINQ 进行查询 Query the database IEnumerable

随机推荐

  • Python Pandas 计算日期之间的平均天数

    使用以下 python pandas dataframe df Customer ID Transaction ID ABC 2016 05 06 1234 ABC 2017 06 08 3456 ABC 2017 07 12 5678 A
  • 最佳实践是使用 Thread.sleep() 还是在单击 selenium Web 驱动程序中的任何元素之前显式等待

    我是网络驱动程序的新手 我为网络应用程序编写了一个selenium脚本 其中包含backbone js和select2 我曾经经常遇到 NosuchElementException 和 Element is not clickable 异常
  • 绑定表源继承什么类

    我正在使用 Xamarin 和 mvvmcross 以及如何拥有最终绑定到可观察集合的表的视图 This video http www youtube com watch v Vd1p2Gz8jfY关于如何创建自定义单元格的信息非常丰富 但
  • 这个异常是什么意思?

    我在使用 MAVEN 构建 Grails 应用程序时收到此消息 引导程序完成后 我在日志中收到此异常 有人可以指导我到哪里寻找此异常的原因吗 它想表达什么 2012 09 26 13 00 45 532 Thread 7 ERROR Sta
  • HTML5 contenteditable div 仅接受纯文本

    我正在尝试创建一个HTML5contenteditable div 只接受纯文本 我在下面使用 html 和 jQuery HTML div div jQuery function contenteditable on paste func
  • 因素级别内的记录计数

    我正在尝试使用从 1 到 n 的连续数字填充表中的字段 或完全创建一个单独的向量 以更容易的为准 其中 n 是共享相同因子级别的记录总数 然后返回到 1对于下一个级别 等等 也就是说 对于这样的表 data lt matrix c rep
  • osmdroid、地图 API v2 和片段

    好的 您可能认为这相对简单 但事实并非如此 我在我的网站上使用开放街道地图 因为数据可以免费使用 编辑和更新 我的项目遵循这个口头禅 除了谷歌 API 使用限制 保存数据限制之外 谷歌地图根本不适合我 至少在网络上是这样 鉴于此 我想我应该
  • 解析云代码新 SDK 包含子类不起作用

    我使用的是旧的解析 SDK 版本 1 5 0 我的函数返回了所有包含的内容 现在我尝试使用最新的 SDK 该函数仅返回主对象 在门和位置上我仅获得 指针 这是代码 Parse Cloud define get gates for user
  • Aurelia,如何进行可选绑定

    Does Aurelia支持可选绑定吗 我在任何地方都找不到这个信息 我遇到的问题是我有一个title可能会也可能不会填充在对象数组中的属性 我用一个repeat for and title bind但如果此属性不是对象数组的一部分 我根本
  • 查找哪个 spring 上下文文件加载了 bean

    它是一个很大的应用程序 并且有多个由 spring 容器加载的 bean xml 文件 有一个 bean 具有相同的 id 以某种方式被覆盖 有没有办法告诉 spring 记录哪个 bean 是从哪个 xml 文件创建的 您可以创建一个Re
  • 制作键盘记录器

    我想在我自己的电脑上制作一个小型键盘记录器 以了解击键如何与 C 配合使用 我在网上找到了一些代码 只是对其进行了一些编辑 尽管我不确定如何做我想做的事情 include stdafx h include
  • 如何在iOS自动布局中为按钮添加等间距和等宽度

    我对 Xcode 中的自动布局约束不熟悉 我有一个像这样的底视图UITabBar with 6 UIButtons 在没有限制的情况下 我将这些按钮与每个按钮的 5 个空格填充对齐 并且每个按钮的宽度为 50 现在 我试图通过使用自动布局来
  • 根据“.”将GL_CODE列拆分为不同的列,而不使用SQL中的函数[重复]

    这个问题在这里已经有答案了 我需要一个查询来根据 将 GL CODE 分成不同的列 作为分隔符 我已附上我已完成的设置的屏幕截图 但在提取第七段后出现错误 请注意 每个元素中的每行的字符串长度并不相同 我使用过的代码 select YEAR
  • 是否有任何工具可以将 SVG 数据转换为 Canvas 友好的输入? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 android 中限制仅沿 y 轴拖放?

    我试图将拖放运动限制为仅在 Y 轴上 以便用户只能查看视图并将其向上或向下拖动 而不能向左或向右拖动 我现在有两个视图 textView 和 dropZone 的 id 其中一个 textView 设置了触摸侦听器 另一个 dropZone
  • 自上而下的递归方案

    我们能否定义一个递归方案 在不失去任何通用性的情况下 自上而下构造值 而不是自下而上 这将非常有帮助 因为我已经看到很多次首先应用使用递归方案内部定义的函数reverse其输入 清楚地表明需要foldl 就像 从前到后 执行 尽管人们普遍认
  • 经典 ASP - 获取完整的 url 名称

    我想知道是否有人可以帮助我 我有以下 URL 这是动态的 www website com images gal boxes pic004 asp 我如何使用经典 ASP 提取 boxes pic004 部分 Thanks
  • 返回应用程序时取消选择表视图行

    我有一个表格视图 其中一个表格视图单元格打开另一个应用程序 当我返回我的应用程序时 表格视图单元格仍然突出显示 返回应用程序时取消选择表格视图单元格的最佳方法是什么 编辑 问题是 viewWillAppear or viewDidAppea
  • 如何为 UITextField 实现类似 NSLineBreakByTruncatingHead 的功能?

    我需要实现类似的目标NSLineBreakByTruncatingHead for UITextField如此处所示 我们假设原文是 这是无法在 UITextField 内显示的长文本 我需要它像 无法显示在 UITextField 内 但
  • 在 Objective C (Cocoa) 线程中运行 C 代码(适用于 iOS)

    首先 我是一名非常新的 Objective C Cocoa iOS 开发人员 但我以前编写过 C C 应用程序 因此 我设法在我的 iPhone 应用程序中运行 Rabbitmq c http hg rabbitmq com rabbitm