首先,我是一名非常新的 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(使用前将#替换为@)