Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 崩溃:com.apple.root.default-qos_Ios_Swift_Multithreading_Grand Central Dispatch_Dispatch Async - Fatal编程技术网

Ios 崩溃:com.apple.root.default-qos

Ios 崩溃:com.apple.root.default-qos,ios,swift,multithreading,grand-central-dispatch,dispatch-async,Ios,Swift,Multithreading,Grand Central Dispatch,Dispatch Async,我有一个相当简单的应用程序,可以解析RSS提要并在表视图中显示其内容。它在应用商店中提供。我集成了Crashlytics崩溃报告。我最近收到两份报告。这些有点难以解读 这发生在运行iOS 10.2.1的iPhone 6上 这是来自运行iOS 10.2.1的iPhone5 尽管它说它因侵犯隐私而崩溃,但我不会访问任何需要在我的应用程序中获得许可的服务 在com.apple.root.default-qos上搜索也让我相信这可能与后台线程有关。我使用后台线程的唯一地方是解析RSS提要数据 Dis

我有一个相当简单的应用程序,可以解析RSS提要并在表视图中显示其内容。它在应用商店中提供。我集成了Crashlytics崩溃报告。我最近收到两份报告。这些有点难以解读

这发生在运行iOS 10.2.1的iPhone 6上

这是来自运行iOS 10.2.1的iPhone5

尽管它说它因侵犯隐私而崩溃,但我不会访问任何需要在我的应用程序中获得许可的服务

在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的模拟器上测试了这段代码,但没有发生崩溃


有没有其他办法来解决这个问题

我会仔细检查您的所有权限。在我的例子中,从iOS10开始,您需要权限才能将内容保存到用户的相机卷。在我的应用程序中,我显示了一个默认的共享表,每当用户选择“保存照片”时,应用程序就会崩溃,并显示其中一条非常没有帮助的错误消息。我补充说

<key>NSPhotoLibraryAddUsageDescription</key>
    <string>Allow you to save charts and graphs from the app to your phone.</string>
NSPhotoLibraryAddUsageDescription
允许您将应用程序中的图表保存到手机中。

到我的
info.plist
clean
run
。所有问题都解决了。

这看起来像是权限问题,你确定你没有使用需要权限的东西,并且你正在测试的设备已经授予了该权限吗?见和。还有,这是苹果的。我仔细检查了所有的东西。在我的设备中,它在设置中启用了常用的蜂窝数据,仅此而已。由于我的设备仍在iOS 9中,我再次通过重置运行iOS 10.2的模拟器进行了测试,并重新安装了应用程序。仍然没有撞车。另一件事是,如果它真的是一个与权限相关的崩溃,我会在崩溃报告中得到整个which permission is missing错误消息,而在本例中我没有得到这个消息。而且我应该注意到,这些错误只报告了两次(每次一次)。其他用户拥有100%无崩溃会话。您是否使用广告框架?确保您已经检查了它需要哪些权限-可能偶尔会提供需要一些奇怪权限的广告。您不一定会看到权限缺失消息-例如,如果您尝试使用CoreMotion数据。您是否有可能使用共享功能与社交媒体共享应用程序内容,如图像?如果是,例如,如果未授予gallery权限,则
UIActivityViewController
中的
Save Image
按钮将导致崩溃。