我们有一个bug,它破坏了我们的UI的外观,一些UI元素重叠,或者已经被添加到子视图两次。该错误很难复制,因此很难修复它。现在我想到了原因,并且可能更改UI的方法被同时调用两次。我是正确的,我试图编程创建bug。
ios stop 2线程同时使用方法
我们有一个错误是由一个方法被不同的线程同时访问引起的。模拟这个问题,并更好地理解它。看到下面的代码。
当我这样做,updatePresence方法调用,我的程序完美的作品
ViewController.m
-(void)loadConversationScreen{
[conversationController updatePresence];
}
但是当我这样做,不顺心的事与我的计划
ViewController.m
-(void)loadConversationScreen{
[conversationController performSelectorInBackground:@selector(updatePresence) withObject:nil];
[conversationController updatePresence];
}
这是因为该方法同时被访问,并且我的UIView的实例也被同时访问/更改。
我如何PROPERLY站2条使用的方法在同一时间线?
我该如何正确处理它在IOS(如果没有正确的方法,有什么工作),有没有建立在锁或某种?
我的应用应该支持IOS 4.0及以上
提前感谢所有您的帮助。
永远不要在后台线程上更新您的用户界面。 UIKit严格禁止它。 – warrenm
嗯,谢谢,我不知道,但这只是一个尝试使用两个不同的线程同时更新它。该错误很难重现,但是当两个线程同时访问方法时发生错误 –
performSelectorInBackground仅用于模拟不同线程上的方法访问,但实际上我并没有在我们的代码中执行此操作。谢谢你通知我这是非法的。我学到了一些新东西。那么有人能帮我解决我的问题吗? –