繁体   English   中英

我什么时候需要担心iOS应用程序中的线程安全性?

[英]When do I need to worry about thread-safety in an iOS application?

在编写通常的视图控制器代码时,我可以假设只从单个事件循环线程调用它吗? 我需要什么样的类才能使线程安全? 涉及多个线程的常见情况是什么?

并发编程指南很好。 这里有一些非常重要的事情需要记住。

- 您应该只从主线程更新UI。 这可以让你以微妙的方式...

- NSNotifications将在它们被解雇的主题中收到。 因此,如果您启动一个线程并订阅NSNotification来触发UI操作,那么您应该在获取它时检查您所在的线程。 如果它不在主线程上,则使用NSObject的performSelectorOnMainThread:withObject:waitUntilDone:在主线程上获取它。

- 如果你正在绘制一些非ui上下文,我相信核心图形现在是线程安全的。 (我相信CATiledLayer做了一些聪明的事情因为这个)

- 通常对于视图控制器,您应该考虑的唯一事件循环是主线程上的那个。 在另一个线程上创建自己的事件循环之前请三思而后行

如果您正在编写普通的UIViewController代码,则无需担心iOS中的线程安全性。 在iOS中,任何有关UI的消息都应该在主线程上运行。

如果你自己不在后台执行某些消息,通常,你不必担心线程,在大多数情况下,它总是在主线程上。

PS一些像Game Kit这样的框架有时会在后台执行消息,但它不是关于UI的,而且来自Apple的文档会警告你确保消息是否在主线程上运行。

并发编程指南可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM