首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone MultiThreading

iPhone MultiThreading
EN

Stack Overflow用户
提问于 2011-03-29 21:14:04
回答 3查看 392关注 0票数 1

iPhone开发:

我希望有一个无限循环不断地检查一个NSMutableArray,如果大小>0,就拉第一个对象,用它做一些事情,删除它,等待.25秒,然后继续检查。

我希望我的GUI按钮添加这个列表。有办法这样做吗?是否有办法通过在主线程中设置循环来做到这一点?

更新我想我没有正确地问这个问题。我使用AsyncSocket类发送telnet命令。我需要快速发送他们,因为他们用来控制一辆RC汽车,然而RC接收器有点慢。所以我想减慢我的iPhone发出命令的速度。现在,我有发送命令的按钮事件,但是我想让事件将命令添加到list/queue/数组中。在parralel中,单击按钮,我希望有一个进程每隔一秒钟检查一次队列,并在队列中发送命令。

我的问题:

AsyncSocket不是线程安全的,所以我不能让另一个线程发送命令。文档内容如下:

如果您发现自己位于一个与运行AsyncSocket的线程不同的线程上,并且需要在AsyncSocket上调用一个方法,那么您必须使用一个类似于执行器:onThread:的方法来确保在AsyncSocket的线程上调用该方法(从而维护线程安全)。

我不知道这意味着什么..。

  1. 这句话的意思是什么?
  2. 我想要做的事情需要多线程吗?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-29 21:21:10

我建议您查看一下键值观测。这将允许您设置一个观察类,以便在将条目输入数组时得到通知。

它将比您将找到的标准教程稍难一些,最简单的是观察正在更新的属性。在向数组中添加元素时,需要使用-willChange:valuesAtIndexes:forKey:-didChange:valuesAtIndexes:forKey:。如果您只需要收听添加的项目,这就足够了。但是,您可以查看ObservingOptions以获得更好的控制。

请参阅有关NSKeyValueObserving的更多信息:参考文件/occ/cat/NSKeyValueObserving

此方法将允许您不浪费任何更改的周期轮询。

票数 4
EN

Stack Overflow用户

发布于 2011-03-29 21:20:04

这很容易通过使用NSOperationsQueue来解决。

票数 1
EN

Stack Overflow用户

发布于 2011-03-29 21:19:02

添加一个间隔为0.25的NSTimer,它将在循环中擦除它。检查文件。这里有一些有用的示例项目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5479004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档