iPhone开发:
我希望有一个无限循环不断地检查一个NSMutableArray,如果大小>0,就拉第一个对象,用它做一些事情,删除它,等待.25秒,然后继续检查。
我希望我的GUI按钮添加这个列表。有办法这样做吗?是否有办法通过在主线程中设置循环来做到这一点?
更新我想我没有正确地问这个问题。我使用AsyncSocket类发送telnet命令。我需要快速发送他们,因为他们用来控制一辆RC汽车,然而RC接收器有点慢。所以我想减慢我的iPhone发出命令的速度。现在,我有发送命令的按钮事件,但是我想让事件将命令添加到list/queue/数组中。在parralel中,单击按钮,我希望有一个进程每隔一秒钟检查一次队列,并在队列中发送命令。
我的问题:
AsyncSocket不是线程安全的,所以我不能让另一个线程发送命令。文档内容如下:
如果您发现自己位于一个与运行AsyncSocket的线程不同的线程上,并且需要在AsyncSocket上调用一个方法,那么您必须使用一个类似于执行器:onThread:的方法来确保在AsyncSocket的线程上调用该方法(从而维护线程安全)。
我不知道这意味着什么..。
发布于 2011-03-29 21:21:10
我建议您查看一下键值观测。这将允许您设置一个观察类,以便在将条目输入数组时得到通知。
它将比您将找到的标准教程稍难一些,最简单的是观察正在更新的属性。在向数组中添加元素时,需要使用-willChange:valuesAtIndexes:forKey:和-didChange:valuesAtIndexes:forKey:。如果您只需要收听添加的项目,这就足够了。但是,您可以查看ObservingOptions以获得更好的控制。
请参阅有关NSKeyValueObserving的更多信息:参考文件/occ/cat/NSKeyValueObserving
此方法将允许您不浪费任何更改的周期轮询。
发布于 2011-03-29 21:20:04
这很容易通过使用NSOperationsQueue来解决。
发布于 2011-03-29 21:19:02
添加一个间隔为0.25的NSTimer,它将在循环中擦除它。检查文件。这里有一些有用的示例项目。
https://stackoverflow.com/questions/5479004
复制相似问题