2010-11-12 75 views
-1

我知道Apple说所有与UI相关的操作都应该在主线程中进行。iPhone - 总是在主线程上更新用户界面?

所以我的问题是“所有UI相关的操作”真的意味着每一个可能的UI相关操作?

例如,我会在一个单独的线程中将ViewB ViewB添加到ViewA中。我应该总是在单独的线程上使用[ViewA performSelectorOnMaintThread:@selector(addSubview:)......?

谢谢

回答

-1

是的。

否则会崩溃。

+0

但它太无聊和麻烦,不是吗? – Jack 2010-11-12 13:21:09

+0

如何设置框架或中心或其他UI相关的属性? – Jack 2010-11-12 13:21:35

+0

直到你的其他线程触及UI,这一切都很好。你会立即知道。 – Brandon 2010-11-12 14:51:40

0

是的,你应该在主线程中处理关于UI的所有信息。 如果你在MFC下,你应该采用相同的方式。

0

Grand Central Dispatch在后台线程中执行某些操作(例如:dispatch_async(dispatch_get_main_queue(), myBlock);)并且根本没有崩溃。我做了很多事情myBlock()

+0

所以,这意味着你使用UI的主线程,如果你使用dispatch_async(dispatch_get_main_queue():) – SAKrisT 2012-04-05 13:46:19

+0

呢?它永远不会冻结用户界面,也有一些长时间的businneses完成后很长一段时间 – ilhnctn 2012-04-05 13:48:33

+0

是的,尝试检查调试器http://gyazo.com/7bd2c7e231715068c3cc8f59a01ffb41 – SAKrisT 2012-04-05 15:24:33