iPhone开发:
我希望有一个无限循环不断检查NSMutableArray,如果[size> 0]拉第一个对象,对其进行处理,将其删除,等待.25秒,然后继续检查。
我希望我的GUI按钮添加此列表。有没有办法做到这一点?有没有办法通过在主线程中进行循环来做到这一点?
更新
我想我没有正确地问过这个问题。我正在使用AsyncSocket类发送telnet命令。我需要快速发送它们,因为它们曾经用于控制RC汽车,但是RC接收器有点慢。因此,我想降低iPhone发送命令的速度。现在我有按钮事件发送命令,但我想让事件将命令添加到列表/队列/数组。在与按钮单击并列的同时,我希望进程每隔.25秒检查一次队列并发送队列中的命令。
我的问题:
AsyncSocket不是线程安全的,所以我不能再有其他线程发送命令。文档阅读
If you find yourself on a thread which is different from the thread on which AsyncSocket is running, and you need to invoke a method on AsyncSocket, then you must use a method like performSelector:onThread: to ensure the method is invoked on AsyncSocket's thread (and thereby maintaining thread-safety)."
我不知道这意味着什么...
最佳答案
我建议研究Key Value Observing。这将允许您设置一个观察类,以便在向数组中输入条目时得到通知。
它会比您将找到的标准教程难一些,最简单的是观察正在更新的属性。将元素添加到数组时,需要使用-willChange:valuesAtIndexes:forKey:
和-didChange:valuesAtIndexes:forKey:
。如果您只需要听添加的项目,就足够了。但是,您可以查看ObservingOptions来真正获得更好的控制。
在此处查看有关NSKeyValueObserving
的更多信息:http://developer.apple.com/library/ios/#documentation/cocoa/Reference/Foundation/Protocols/NSKeyValueObserving_Protocol/Reference/Reference.html#//apple_ref/occ/cat/NSKeyValueObserving
这种方法将使您不浪费任何周期来轮询更改。
关于iphone - iPhone多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479004/