0

再会 ...!

我想通过按下其中的按钮来简单地隐藏 UIView(称为“secondView”)。我遇到的问题是,当我按下按钮时,执行该方法并隐藏其超级视图需要很长时间(大约 20 秒),而我只是在 iOS 11.2 上运行的 iphone 模拟器上看到了这个问题。我已经在 iOS 9.0 iphone 模拟器和 iphone 5 iOS 10.3 真实设备上进行了测试。不幸的是,我没有安装任何安装了 iOS 11.2 的真实设备进行测试。

这是我用来隐藏 UIView 的方法:

-(IBAction)hideSecondView:(id)sender{
    secondView.hidden = YES;
}

根据主题Showing hidden view really slow和@Duncan C 提供的答案,我将代码更改如下:

-(IBAction)hideSecondView:(id)sender{
    dispatch_async(dispatch_get_main_queue(), ^{
        secondView.hidden = YES;
    });
}

但问题仍然存在:(

任何帮助,将不胜感激。

更新1:

作为由@drct 增强的代码片段,我检查了除main 之外的线程上是否有任何UIKit 访问。但是不抓!

我有一个简单的测试项目,主线程检查器显示应用程序没有产生其他胎面。我在 secondView 的隐藏延迟时间内暂停了执行。

4

1 回答 1

0

@Duncan C 写了一个很好的答案来描述您的问题。

当您不知道时,您可能有其他代码试图从后台线程执行 UIKit 调用。

你能检查一下你没有其他 UIKit 调用吗?

于 2018-03-13T10:20:40.177 回答