gpt4 book ai didi

ios - 设置 subview.hidden = false 锁定 UI 数秒

转载 作者:可可西里 更新时间:2023-11-01 00:37:36 26 4
gpt4 key购买 nike

我使用按钮在隐藏的 UIVisualEffectView 上填充 UIPickerView。用户单击按钮,VisualEffectView 会模糊其他所有内容,PickerView 会显示联系人列表中的所有姓名(我正在使用 SwiftAddressBook 来执行此操作。)

除了当用户单击按钮时,UI 会锁定大约 5-10 秒之外,这工作正常。我找不到任何 CPU 或内存使用率过高的证据。如果我只是将排序后的数组打印到控制台,它几乎会立即发生。所以关于显示窗口的一些事情导致了这个错误。

@IBAction func getBffContacts(sender: AnyObject) {
swiftAddressBook?.requestAccessWithCompletion({ (success, error) -> Void in
if success {
if let people = swiftAddressBook?.allPeople {
self.pickerDataSource = [String]()
for person in people {
if (person.firstName != nil && person.lastName != nil) {
//println("\(person.firstName!) \(person.lastName!)")
self.pickerDataSource.append(person.firstName!)
}
}
//println(self.pickerDataSource)
println("done")
self.sortedNames = self.pickerDataSource.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending }
self.pickerView.reloadAllComponents()
self.blurView.hidden = false
}


}
else {
//no success, access denied. Optionally evaluate error
}
})

}

最佳答案

您遇到线程问题。读。这。文档!

requestAccessWithCompletion 只是 ABAddressBookRequestAccessWithCompletion 的包装器。我们在那里找到了什么?

The completion handler is called on an arbitrary queue

所以你的代码在后台运行。而且您绝不能,绝不能,绝不能尝试在后台线程上与用户界面进行交互。 所有 您的代码都是错误的。您需要在完成处理程序开始时立即跳出到主线程。如果您不这样做,灾难就在等待着您。

关于ios - 设置 subview.hidden = false 锁定 UI 数秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419686/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com