使用XCode 8修复iOS 11崩溃

inc*_*ist 2 xcode uikit ios xcode8 ios11

我的应用程序病毒式传播(yay!),并且在启动时为所有运行iOS 11的用户(boo!)发生硬崩溃.但是,当我使用XCode 9 beta(1和2)构建和运行它时,它在模拟器和手机上都能正常工作.

由于XCode 8(产生破坏的版本)无法调试iOS 11设备,并且XCode 9无法复制崩溃,因此似乎没有办法测试潜在的修复,除了将它们放在TestFlight上.即使我这样做,也无法将其连接到XCode 8调试器.有没有更简单的方法在XCode 8上调试iOS 11?谢谢!

(好奇的是,崩溃发生在UITableView._endCellAnimation- 关于__exceptionPreprocess的事情.这是片段:

    let task = ItemSource.sharedSource.getRandomItems(10)
    task.continueWith(
        Executor.mainThread,
        continuation: {
            (task: Task<[Item]>) in
            let nouns: [Item] = task.result!
            self.controller.tableView.beginUpdates()
            var indexPaths = [IndexPath]()
            for noun in nouns {
                indexPaths.append(self.append(noun))
            }
            self.controller.tableView.insertRows(at: indexPaths, with: .none)
            self.controller.tableView.endUpdates() <-- Crashes here
        }
    )
Run Code Online (Sandbox Code Playgroud)

小智 5

由于XCode 8(产生破坏的版本)无法调试iOS 11设备,

将DeviceSupport从Xcode9-beta复制到Xcode8将解决此问题

终端命令:

cp -a /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/11.0* /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/
Run Code Online (Sandbox Code Playgroud)