Isu*_*uru 11 multithreading grand-central-dispatch ios dispatch-async swift
我有一个相当简单的应用程序,它解析RSS提要并在表格视图中显示它的内容.它可以在App Store上找到.我整合了Crashlytics崩溃报告.我最近收到两份报告.这些有点难以破译.
这发生在运行iOS 10.2.1的iPhone 6中.
这是来自运行iOS 10.2.1的iPhone 5.
虽然它说它因隐私侵犯而崩溃,但我没有访问任何需要我的应用程序权限的服务.
另外搜索com.apple.root.default-qos让我相信这可能与后台线程有关.我使用后台线程的唯一地方是解析RSS提要数据.
DispatchQueue.global(qos: .background).async {
guard let data = try? Data(contentsOf: URL) else {
return
}
do {
let xmlDoc = try AEXMLDocument(xml: data)
if let items = xmlDoc.root["channel"]["item"].all {
self.posts.removeAll()
for item in items {
let title = item["title"].value ?? ""
// ...
self.posts.append(jobPost)
}
DispatchQueue.main.async {
self.saveposts(self.posts)
self.posts.sort { $0.publishDate > $1.publishDate }
self.tableView.reloadData()
UIApplication.shared.toggleNetworkActivityIndicator(show: false)
self.toggleUI(enable: true)
if self.refreshControl.isRefreshing { self.refreshControl.endRefreshing() }
}
}
} catch let error as NSError {
print("RSS parsing failed: \(error)")
self.showErrorAlert(error)
UIApplication.shared.toggleNetworkActivityIndicator(show: false)
self.toggleUI(enable: true)
if self.refreshControl.isRefreshing { self.refreshControl.endRefreshing() }
}
}
Run Code Online (Sandbox Code Playgroud)
我在运行iOS 9.3.5的iPhone 5和运行iOS 10.2的模拟器上测试了这段代码,但没有发生崩溃.
还有其他方法可以追踪这个问题吗?
我会仔细检查你的所有权限.在我的情况下,从iOS10开始,您需要权限将内容保存到用户的相机胶卷.在我的应用程序中,我显示了一个默认的共享表,每当用户选择"保存照片"时,该应用程序就会崩溃,其中一个非常有用的错误消息.我补充道
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Allow you to save charts and graphs from the app to your phone.</string>
Run Code Online (Sandbox Code Playgroud)
对我info.plist,clean和run.问题得到解决的一切.
| 归档时间: |
|
| 查看次数: |
5698 次 |
| 最近记录: |