坠毁:com.apple.root.default-qos

时间:2017-03-10 16:23:59

标签: ios swift multithreading grand-central-dispatch dispatch-async

我有一个相当简单的应用程序,它解析RSS提要并在表格视图中显示它的内容。它可以在App Store上找到。我整合了Crashlytics崩溃报告。我最近收到两份报告。这些有点难以破译。

这是在运行iOS 10.2.1的iPhone 6中发生的。

enter image description here

这是来自运行iOS 10.2.1的iPhone 5。

enter image description here

即使它说它因隐私侵犯而崩溃,我也无法访问任何需要我的应用程序权限的服务。

另外搜索 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() }
    }
}

我在运行iOS 9.3.5的iPhone 5和运行iOS 10.2的模拟器上测试了这段代码,但没有发生崩溃。

还有其他方法可以追踪这个问题吗?

1 个答案:

答案 0 :(得分:6)

我会仔细检查您的所有权限。在我的情况下,从iOS10开始,您需要权限将内容保存到用户的相机胶卷。在我的应用程序中,我显示了一个默认的共享表,每当用户选择“保存照片”时,该应用程序就会崩溃,其中一个非常有用的错误消息。我添加了

$.getJSON('/data', {}, function(data){
    value = data.tem_min;
    series.addPoint([x, value], true, true);
})

到我的<key>NSPhotoLibraryAddUsageDescription</key> <string>Allow you to save charts and graphs from the app to your phone.</string> info.plist&amp; clean。问题得到了解决。