0

这个 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)
    }



}
4

0 回答 0