这个 iOS 崩溃日志是象征性的吗?它来自 beta 应用程序审查,所以没有自动符号化,但我将它导入到设备崩溃日志中,苹果表示将使用 dsym 文件进行符号化。
如果是,那么我该如何解释这个问题以及问题出在哪里?它不会在我的任何设备或模拟器或我们的内部测试人员上崩溃......
苹果表示它在启动时崩溃,并在单击主屏幕上的按钮启动时崩溃。
Date/Time: 2018-04-04 08:46:45.5260 -0700
Launch Time: 2018-04-04 08:46:42.5743 -0700
OS Version: iPhone OS 11.2.6 (15D100)
Baseband Version: 6.30.04
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Application Specific Information:
abort() called
Filtered syslog:
None found
Last Exception Backtrace:
0 CoreFoundation 0x18502b164 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x184274528 objc_exception_throw + 55
2 UIKit 0x18f22cfdc -[UIPopoverPresentationController presentationTransitionWillBegin] + 2775
3 UIKit 0x18e933b84 __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 2247
4 UIKit 0x18e931648 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 467
5 UIKit 0x18e853aa8 _runAfterCACommitDeferredBlocks + 291
6 UIKit 0x18e846e5c _cleanUpAfterCAFlushAndRunDeferredBlocks + 287
7 UIKit 0x18e5d8464 _afterCACommitHandler + 131
8 CoreFoundation 0x184fd2cdc __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 31
9 CoreFoundation 0x184fd0694 __CFRunLoopDoObservers + 411
10 CoreFoundation 0x184fd0c50 __CFRunLoopRun + 1291
11 CoreFoundation 0x184ef0c58 CFRunLoopRunSpecific + 435
12 GraphicsServices 0x186d9cf84 GSEventRunModal + 99
13 UIKit 0x18e6495c4 UIApplicationMain + 235
14 FriendlyEats 0x1003c196c 0x1003bc000 + 22892
15 libdyld.dylib 0x184a1056c start + 3
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x0000000184b402e8 __pthread_kill + 8
1 libsystem_pthread.dylib 0x0000000184c552f8 pthread_kill$VARIANT$mp + 396
2 libsystem_c.dylib 0x0000000184aaefbc abort + 140
3 libc++abi.dylib 0x000000018424b068 __cxa_bad_cast + 0
4 libc++abi.dylib 0x000000018424b210 default_unexpected_handler+ 8720 () + 0
5 libobjc.A.dylib 0x0000000184274810 _objc_terminate+ 34832 () + 124
6 libc++abi.dylib 0x000000018426354c std::__terminate(void (*)+ 107852 ()) + 16
7 libc++abi.dylib 0x0000000184263158 __cxa_rethrow + 144
8 libobjc.A.dylib 0x00000001842746e8 objc_exception_rethrow + 44
9 CoreFoundation 0x0000000184ef0cc4 CFRunLoopRunSpecific + 544
10 GraphicsServices 0x0000000186d9cf84 GSEventRunModal + 100
11 UIKit 0x000000018e6495c4 UIApplicationMain + 236
12 FriendlyEats 0x00000001003c196c 0x1003bc000 + 22892
13 libdyld.dylib 0x0000000184a1056c start + 4
主屏幕的文件(苹果的报告说它在启动应用程序并单击来自该文件的主屏幕上的按钮时崩溃)。
import UIKit
class HomeViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var image = UIImage()
@IBAction func unwindToThisHomeController(_ segue: UIStoryboardSegue) {
}
@IBOutlet weak var backgroundButton: UIButton!
@IBAction func startButton(_ sender: Any) {
startButtonTapped()
}
let imagePicker = UIImagePickerController()
func startButtonTapped(){
let alertController = UIAlertController(title: nil, message: "Select from where you would like to import your landscape photo.", preferredStyle: .actionSheet)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { action in
// ...
}
alertController.addAction(cancelAction)
let OKAction = UIAlertAction(title: "Photo Library", style: .default) { action in
self.imagePicker.allowsEditing = false
self.imagePicker.sourceType = .photoLibrary
self.imagePicker.delegate = self;
self.present(self.imagePicker, animated: true, completion: nil) }
alertController.addAction(OKAction)
let destroyAction = UIAlertAction(title: "Camera", style: .default) { action in
// print(action)
self.imagePicker.allowsEditing = false
self.imagePicker.sourceType = .camera
self.imagePicker.delegate = self;
self.present(self.imagePicker, animated: true, completion: nil)
}
alertController.addAction(destroyAction)
self.present(alertController, animated: true) {
// ...
}
}
override func viewDidLoad() {
super.viewDidLoad()
let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
backgroundImage.image = UIImage(named: "background.jpg")
backgroundImage.contentMode = UIViewContentMode.scaleAspectFill
self.view.backgroundColor = UIColor.black
backgroundImage.alpha = 0.4
self.view.insertSubview(backgroundImage, at: 0)
imagePicker.delegate = self
backgroundButton.layer.cornerRadius = 15
}
//MARK: image picker delegate method
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let img = info[UIImagePickerControllerEditedImage] as? UIImage
{
self.image = img
}
else if let img = info[UIImagePickerControllerOriginalImage] as? UIImage
{
self.image = img
}
picker.dismiss(animated: true,completion: {self.performSegue(withIdentifier: "ImageLoaded",
sender: self)})
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ImageLoaded" {
if let navController = segue.destination as? UINavigationController {
if let destinationController = navController.topViewController as? LandscapeDesignViewController {
destinationController.backgroundImageHolder.image = self.image
}
else {
print("inner failure")
}
}
else {
print("failed")
print(segue.destination)
}
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
}