这真的让我发疯。
我有一个按钮,如果触摸该按钮,它将调用一个更新 UI 的方法。这是有问题的方法:
- (void)loadLevelWithImagePath:(NSString *)imagePath difficulty:(int)difficulty modelName:(NSString *)modelName
{
// do stuffs
}
除了它没有。
但是,当我将整个方法体包含在:
dispatch_async(dispatch_get_main_queue(), ^{
// do stuffs
}
有用!
但是,我很困惑,因为当我在方法中放置断点时,根据调试器,它已经在主线程中。另外,如果我进行这两项检查:
- (void)loadLevelWithImagePath:(NSString *)imagePath difficulty:(int)difficulty modelName:(NSString *)modelName
{
NSLog(@"%d", [NSThread currentThread] == [NSThread mainThread]);
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%d", [NSThread currentThread] == [NSThread mainThread]);
// do stuffs
}
}
两者都返回 TRUE!
所以我的问题是,为什么 UI 没有更新?非常感谢!