2012-08-10 51 views
0

如果应用程序异步执行代码块并在回调中通知完成状态,请执行这些操作是否在主线程(回调)上执行?通过异步回调触发

在此回调中处理Core Graphics绘图和文件操作的正确方法是什么?

我目前有这些指令在回调中运行,但是想要触发一个线程来处理这些指令。

回答

0

如果您正在做任何UI绘图,那必须在主线程上。如果您现在正在使用这些异步模块(表面上并发调度队列),那么为什么不只是在那里完成所有的工作,并且当您有完成的产品要显示时,只能在主模块上回传消息。如果你的回调调用你的类中的其他方法,处理并发的最安全的方法是定义助手对象 - 小对象,它需要一些输入和产品输出。

创建帮助程序,附加所需的任何数据,在队列中的块中启动它,并在完成时将消息提交到提取完成产品的主线程中,呈现它,然后删除辅助对象。

+0

异步完成的代码是在私有库完成之前的一个步骤。 – jarryd 2012-08-10 17:44:54

+0

那么你的问题到底是什么?您在某个线程上返回的私有库文件消息,可能是任何线程。你现在想要更新你的用户界面 - 所以你可以测试你得到的线程“[NSThread isMainThread”,如果是的话就更新一下,或者如果没有在主线程上调度主线程上的块来做工作。 – 2012-08-10 19:50:16

0

我没有很多Core Graphics的经验,但是我在块上做了很多工作。我认为,如果你的应用程序异步执行一个代码块(在一个新的线程上),那么这是在主线程上进行回调或通知的一个好习惯。