我们有一个错误,它破坏了我们 UI 的外观,一些 UI 元素重叠,或者被添加到子视图中两次。该错误几乎无法重现,因此很难修复。现在我想到了原因,可能是同时调用了两次更改UI的方法。我是对的,我试图以编程方式创建错误。
我们有一个错误,这是由不同线程同时访问的方法引起的。模拟这个问题,更好地理解它。请参阅下面发布的代码。
当我这样做时,updatePresence 方法调用,我的程序完美运行
视图控制器.m
-(void)loadConversationScreen{
[conversationController updatePresence];
}
但是当我这样做时,我的程序出了点问题
视图控制器.m
-(void)loadConversationScreen{
[conversationController performSelectorInBackground:@selector(updatePresence) withObject:nil];
[conversationController updatePresence];
}
这是因为该方法正在同时被访问,并且我的 UIView 的实例也在同时被访问/更改。
如何正确阻止 2 个线程同时使用一个方法?
我如何在 IOS 中正确处理它(如果没有正确的方法,有什么解决方法),是否有内置锁或某种东西?
我的应用程序应该支持 ios 4.0 及更高版本
提前感谢大家的帮助。