繁体   English   中英

iOS-线程安全性和performSelectorOnMainThread

[英]iOS - thread safety and performSelectorOnMainThread

我有一个在后台运行本机代码的线程,每隔一段时间就会触发一些回调。 本机回调调用Objective-C方法。 对于每个调用,我基本上是在重画内容或更改类的某些值。 所以我会遇到很多同步问题。

是否可以通过仅在每个回调上执行performSelectorOnMainThread而不是使用锁来解决此问题? 这将防止同步问题还是太多的黑客?

任何绘图都必须在主线程上进行,因此即使您正在使用锁,也将需要使用-performSelectorOnMainThread东西。

您可能还想研究对回调使用块和调度队列,以作为在没有显式锁的情况下处理同步问题的方法。 《 Apple Concurrency编程指南》提供了许多有关使用块和调度队列替代线程/锁的信息。 块和队列是在C级别(不是Objective-C)实现的,因此您可以轻松地将它们添加到C代码中(我假设这就是“本机”的意思),而无需将其重写为Objective-C。

(请注意,在使用块进行回调时,您仍然需要确保将UI绘制操作分派到主队列,以便它们在主线程上运行。)

暂无
暂无

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

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