在我的应用程序中,我有两个线程,首先是我有代码的gui线程 当用户按下每个按钮时调用。
在第二个帖子中我有视频录制机制,我可以在那里开始,捕捉,录制(录制)视频到文件。
当我试图从第一个线程“开始录制”时出现问题 - 它崩溃了。 所以我必须在gui线程中设置某种布尔'通信标志',然后检查它们 在视频线程中,然后从视频线程中“录制视频”。
我认为这样的旗帜很糟糕 - 这是一种简单而恰当的方法吗?
答案 0 :(得分:2)
这是一个非常广泛的主题,你在那里触摸。但是Cocoa确实包含一些有用的线程间通信方法。你可能想看看
[NSObject performSelector:onThread:withObject:waitUntilDone:]
只有在第二个线程中运行NSRunLoop时才会有效。否则你的视频录制课程中会有一个bool @property。这将是你建议的旗帜。从主线程更改其值并从记录循环中的辅助线程检查其值以执行操作。
不要忘记你的@property声明需要是原子的。
您可能还想使用NSOperationQueue
或阻止,很难从您的问题中看出什么效果最好。取决于你的编码偏好,我想。