Подтвердить что ты не робот

EXC_BREAKPOINT (SIGTRAP) для группы проверки приложений. Не воспроизводится

Итак, мое приложение (iOS, Swift 2.2, Xcode 7.3) было отвергнуто командой Beta App Review, потому что она была запутана при запуске.

UPDATE Получил ответ от команды проверки приложений... он только врезался на iPad, а не на iPhone.

Дело в том, что я не могу воспроизвести этот крах. Даже при тестировании на моих трех физических устройствах (iPhone 4S, iPhone6 ​​и iPad Air) с чистой установкой или обновлением через TestFlight Internal Testing (так просматривается точно такая же сборка и архив, что и команда проверки приложений)

Извлечение журнала сбоев (полученное от группы проверки приложений) (символическое):

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000010032ced8
Triggered by Thread:  0
Filtered syslog:
None found
Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   AppName                       0x000000010032ced8 MapViewController.viewDidLoad() -> () (MapViewController.swift:210)
1   AppName                       0x000000010032cf2c @objc MapViewController.viewDidLoad() -> () (MapViewController.swift:0)
2   UIKit                         0x0000000187394b40 -[UIViewController loadViewIfRequired] + 996

MapViewController - это rootViewController UINavigationController, а строка 210 содержит: self.view.backgroundColor = UIColor.blackColor()

UPDATE: Удалили эту строку и отправили другую сборку. Тот же журнал сбоев, теперь сбой на следующей строке: imageview.hidden = true

Пытался запускаться в конфигурации "Release" прямо из Xcode на моем устройстве, в надежде, что он сработает и укажет на меня в правильном направлении, однако не произойдет сбой: -/ Кроме того, очень интересно, у меня было то же самое в предыдущей сборке того же приложения (также было отклонено). Я отправил обзорной группе ответ, подобный этой истории, и они одобрили его для внешнего бета-тестирования (без каких-либо изменений). Только один из моих бета-тестеров (всего около 300) сообщил об аналогичном сбое при запуске.

Было много поисковых запросов на контрольной точке Sigtrap, но они не нашли ничего похожего на то, что я испытываю. Итак, я действительно в недоумении. Я не могу воспроизвести его, и журнал сбоев не указывает мне ни в каком направлении, которое я мог бы исследовать.

ОБНОВЛЕНИЕ: Вот полный (символический) отчет о сбоях, который я получил из команды проверки приложений. (за исключением двоичных изображений, все там прекрасно выглядело). Возможно, что-то там (возможно, другие потоки?) Звонит кому-нибудь. Любая помощь или предложения будут оценены.

Incident Identifier: 5A47A678-EDD0-400B-873F-4BF466E13218
CrashReporter Key:   31c74ad5c3da4b8205dc32464f9bc6fde2f4edea
Hardware Model:      xxx
Process:             AppName [2081]
Path:                /private/var/containers/Bundle/Application/065CA51D-8981-419B-BEB8-3BD5255073E8/AppName.app/AppName
Identifier:          com.pinguido.scenic
Version:             1 (1.08)
Code Type:           ARM-64 (Native)
Parent Process:      launchd [1]

Date/Time:           2016-05-06 20:56:49.49 -0700
Launch Time:         2016-05-06 20:56:49.49 -0700
OS Version:          iOS 9.3.1 (13E238)
Report Version:      105

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000010032d7fc
Triggered by Thread:  0

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   AppName                         0x000000010032d7fc MapViewController.viewDidLoad() -> () (MapViewController.swift:216)
1   AppName                         0x000000010032d850 @objc MapViewController.viewDidLoad() -> () (MapViewController.swift:0)
2   UIKit                           0x0000000187520b40 -[UIViewController loadViewIfRequired] + 996
3   UIKit                           0x00000001875e1118 -[UINavigationController _layoutViewController:] + 72
4   UIKit                           0x00000001875e0ff0 -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 416
5   UIKit                           0x00000001875e0238 -[UINavigationController _startTransition:fromViewController:toViewController:] + 144
6   UIKit                           0x00000001875dfddc -[UINavigationController _startDeferredTransitionIfNeeded:] + 868
7   UIKit                           0x00000001875dfa04 -[UINavigationController __viewWillLayoutSubviews] + 60
8   UIKit                           0x00000001875df96c -[UILayoutContainerView layoutSubviews] + 208
9   UIKit                           0x000000018751c0e4 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 656
10  QuartzCore                      0x0000000184ec2a28 -[CALayer layoutSublayers] + 148
11  QuartzCore                      0x0000000184ebd634 CA::Layer::layout_if_needed(CA::Transaction*) + 292
12  QuartzCore                      0x0000000184ebd4f4 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32
13  QuartzCore                      0x0000000184ebcb24 CA::Context::commit_transaction(CA::Transaction*) + 252
14  QuartzCore                      0x0000000184ebc86c CA::Transaction::commit() + 512
15  QuartzCore                      0x0000000184eb5dd8 CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 80
16  CoreFoundation                  0x00000001823947b0 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
17  CoreFoundation                  0x0000000182392554 __CFRunLoopDoObservers + 372
18  CoreFoundation                  0x00000001822bcd30 CFRunLoopRunSpecific + 416
19  UIKit                           0x000000018758f834 -[UIApplication _run] + 460
20  UIKit                           0x0000000187589f70 UIApplicationMain + 204
21  AppName                         0x000000010042be50 main (AppDelegate.swift:16)
22  libdyld.dylib                   0x0000000181e5a8b8 start + 4

Thread 1:
0   libsystem_kernel.dylib          0x0000000181f78b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x0000000182041530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x0000000182041020 start_wqthread + 4

Thread 2 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0   libsystem_kernel.dylib          0x0000000181f794d8 kevent_qos + 8
1   libdispatch.dylib               0x0000000181e3c7d8 _dispatch_mgr_invoke + 232
2   libdispatch.dylib               0x0000000181e2b648 _dispatch_source_invoke + 0

Thread 3:
0   libsystem_kernel.dylib          0x0000000181f78b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x0000000182041530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x0000000182041020 start_wqthread + 4

Thread 4:
0   libsystem_kernel.dylib          0x0000000181f78b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x0000000182041530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x0000000182041020 start_wqthread + 4

Thread 5:
0   libsystem_kernel.dylib          0x0000000181f7841c __semwait_signal + 8
1   libsystem_c.dylib               0x0000000181e9522c nanosleep + 212
2   libsystem_c.dylib               0x0000000181e9514c usleep + 68
3   AppName                         0x000000010086ac48 recvTimeout + 196
4   AppName                         0x000000010086f864 ConnectionWrapper::recv() + 192
5   AppName                         0x000000010086fed4 HttpUtils::readHttpStatusLine(ConnectionWrapper&, unsigned short&) + 68
6   AppName                         0x000000010086de90 skobbler::HTTP::HttpRequest::receiveAnswerImpl(bool) + 64
7   AppName                         0x000000010086d878 skobbler::HTTP::HttpRequest::receiveAnswer(bool) + 44
8   AppName                         0x000000010086c4ec skobbler::HTTP::HttpManager::HttpWorkerThread::processRequest() + 88
9   AppName                         0x000000010086c938 skobbler::HTTP::HttpManager::HttpWorkerThread::runHelper(void*) + 48
10  libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
11  libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
12  libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 6:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042ce8 _pthread_cond_wait + 648
2   AppName                         0x000000010080b7ec RouteManager::run() + 2588
3   AppName                         0x0000000100807d74 RouteManager::runHelper(void*) + 12
4   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
5   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
6   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 7:
0   libsystem_kernel.dylib          0x0000000181f7841c __semwait_signal + 8
1   libsystem_c.dylib               0x0000000181e9522c nanosleep + 212
2   libsystem_c.dylib               0x0000000181e9514c usleep + 68
3   AppName                         0x000000010086ac48 recvTimeout + 196
4   AppName                         0x000000010086f864 ConnectionWrapper::recv() + 192
5   AppName                         0x000000010086fed4 HttpUtils::readHttpStatusLine(ConnectionWrapper&, unsigned short&) + 68
6   AppName                         0x000000010086de90 skobbler::HTTP::HttpRequest::receiveAnswerImpl(bool) + 64
7   AppName                         0x000000010086d878 skobbler::HTTP::HttpRequest::receiveAnswer(bool) + 44
8   AppName                         0x000000010086c4ec skobbler::HTTP::HttpManager::HttpWorkerThread::processRequest() + 88
9   AppName                         0x000000010086c938 skobbler::HTTP::HttpManager::HttpWorkerThread::runHelper(void*) + 48
10  libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
11  libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
12  libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 8:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042d20 _pthread_cond_wait + 704
2   AppName                         0x00000001007b64e4 SkTimer<MapMatcher, &(MapMatcher::positioningRoutineWrapper(MapMatcher*))>::entryPoint(void*) + 120
3   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
4   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
5   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 9:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042ce8 _pthread_cond_wait + 648
2   AppName                         0x00000001006d1354 ThreadWorker::run() + 72
3   AppName                         0x000000010080107c RunInThread::runHelper(void*) + 28
4   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
5   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
6   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 10:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042ce8 _pthread_cond_wait + 648
2   AppName                         0x0000000100622cf0 TileLoader<MapRenderer>::run() + 2512
3   AppName                         0x0000000100770974 TileLoader<MapRenderer>::runHelper(void*) + 12
4   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
5   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
6   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 11:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042d20 _pthread_cond_wait + 704
2   AppName                         0x00000001007748c4 SkTimer<ReRenderTimer, &(ReRenderTimer::reRenderRoutine(ReRenderTimer*))>::entryPoint(void*) + 120
3   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
4   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
5   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 12:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042d20 _pthread_cond_wait + 704
2   AppName                         0x00000001007747f0 SkTimer<AnimationTimer, &(AnimationTimer::animationTimerRoutine(AnimationTimer*))>::entryPoint(void*) + 120
3   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
4   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
5   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 13:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042ce8 _pthread_cond_wait + 648
2   AppName                         0x00000001006a46c4 WorldTextures::WorkerThreadRoutine(void*) + 100
3   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
4   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
5   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 14:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042ce8 _pthread_cond_wait + 648
2   AppName                         0x00000001006aa2ac EarthSphere::WorkerThreadRoutine(void*) + 120
3   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
4   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
5   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 15:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042ce8 _pthread_cond_wait + 648
2   AppName                         0x00000001006e2fdc MapSearch::runLoop(void*) + 128
3   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
4   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
5   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 16:
0   libsystem_kernel.dylib          0x0000000181f77f24 __psynch_cvwait + 8
1   libsystem_pthread.dylib         0x0000000182042d20 _pthread_cond_wait + 704
2   AppName                         0x000000010077fa34 SkTimer<FcdCollector, &(FcdCollector::timerRoutineWrapper(FcdCollector*))>::entryPoint(void*) + 120
3   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
4   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
5   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 17:
0   libsystem_kernel.dylib          0x0000000181f7841c __semwait_signal + 8
1   libsystem_c.dylib               0x0000000181e9522c nanosleep + 212
2   libsystem_c.dylib               0x0000000181efe09c sleep + 44
3   AppName                         0x00000001008010a4 TimerTarget::run() + 20
4   AppName                         0x000000010080107c RunInThread::runHelper(void*) + 28
5   libsystem_pthread.dylib         0x0000000182043b28 _pthread_body + 156
6   libsystem_pthread.dylib         0x0000000182043a8c _pthread_body + 0
7   libsystem_pthread.dylib         0x0000000182041028 thread_start + 4

Thread 18:
0   libsystem_kernel.dylib          0x0000000181f78b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x0000000182041530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x0000000182041020 start_wqthread + 4

Thread 19:
0   libsystem_kernel.dylib          0x0000000181f78b48 __workq_kernreturn + 8
1   libsystem_pthread.dylib         0x0000000182041530 _pthread_wqthread + 1284
2   libsystem_pthread.dylib         0x0000000182041020 start_wqthread + 4

ИЗМЕНИТЬ Как некоторые люди спрашивали в комментариях, вот код из моего AppDelegate didFinishLaunchingWithOptions и моего rootVC viewDidLoad Как я уже упоминал, я не думаю, что это что-то в моем представленииDidLoad, поскольку оно всегда сбой в первой строке viewDidLoad. Я предполагаю, что это что-то в моем AppDel или, возможно, что-то глобальное... то есть что-то, что выполняется до моего rootVC viewDidLoad.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
    print("APPDEL: applicationDidFinishLaunching")
    appWasCompletelyClosed = true

    // Set SKMaps API Key & Light Map
    let initSettings: SKMapsInitSettings = SKMapsInitSettings()
    initSettings.mapDetailLevel = SKMapDetailLevel.Light
    initSettings.showConsoleLogs = false
    SKMapsService.sharedInstance().initializeSKMapsWithAPIKey(SKMapsAPIKey, settings: initSettings)

    if UD.appVersion == nil || UD.appVersion != "\(NSBundle.mainBundle().infoDictionary!["CFBundleVersion"]!)" {
        startClean()
        UD.appVersion = "\(NSBundle.mainBundle().infoDictionary!["CFBundleVersion"]!)"
    }

    // Get IAP Products & Prices
    IAPHelper.sharedInstance.requestProducts(){(success) -> Void in
        if !success {
            printError("Error getting IAP Products")
        }
    }

    if UD.userID == nil {
        print("First Launch")
        copyCleanDBtoApplicationsFolder()
        MagicalRecord.setupCoreDataStackWithStoreNamed("scenic.sqlite")
        LastSync.resetAll()
        firstLaunch = true
        UD.userID = NSUUID().UUIDString
        print(UD.userID)
        let newUser = User.MR_createEntity()
        newUser.id = UD.userID
        newUser.addedOn = NSDate()
        newUser.lastChanged = NSDate()
        newUser.points = 0
        newUser.pointsToNextLevel = 5
        newUser.level = 0
        newUser.rankWorld = 0
        newUser.rankCountry = 0

        #if DEBUG
            newUser.offlineMapCredits = 100
        #else
            newUser.offlineMapCredits = 5
        #endif


        saveContext()
        self.setUserDefaultsForFirstTime()
        self.createSubDirs()
        Sync.user() {(error) -> Void in
            if error {
                print("There was an error creating the new user on the server. Will try again before next sync action.")
            }
            else {
                print("User succesfully created on the server.")
                UD.userUploadedFirstTime = true
            }
        }
    }
    else {
        MagicalRecord.setupCoreDataStackWithStoreNamed("scenic.sqlite")
    }


    // Initialize cache with offline map regions
    SKMapsService.sharedInstance().mapsVersioningManager.delegate = self
    SKTDownloadManager.sharedInstance()
    //cachedMapRegions = Array<MapRegion>()

    // Set Map to Offline if "Get Map Data Online" is set to No
    setMapConnectivityMode()


    if TripLogger.sharedInstance.logFileExists() {
        appClosedDuringTrip = true
    }

    print("APPDEL: end of applicationDidFinishLaunching")
    return true
}

viewDidLoad:

override func viewDidLoad() {
    super.viewDidLoad()
    print("MAPVC: viewDidLoad")
    //self.view.backgroundColor = UIColor.blackColor()




    // UI Stuff
    profilePicImageView.hidden = true
    profilePicShadowView.hidden = true
    profilePicImageViewTopConstraint.constant -= 30
    profilePicShadowViewTopConstraint.constant -= 30

    searchBar.hidden = true
    searchBarTopConstraint.constant -= 30

    settingsButton.hidden = true
    settingsButtonTopConstraint.constant -= 30

    centerOnCurrentLocationButton.hidden = true
    centerOnCurrentLocationButtonLeadingConstraint.constant -= 30

    locationsButton.hidden = true
    locationsButtonLeadingConstraint.constant -= 30

    startButton.hidden = true
    startButtonBottomConstraint.constant -= 30

    routesButton.hidden = true
    routesButtonTrailingConstraint.constant -= 30

    locationsMenuWidth.constant = 0
    locationsMenuHeight.constant = 0
    routesMenuWidth.constant = 0
    routesMenuHeight.constant = 0
    self.view.layoutIfNeeded()


    routesMenu.hidden = true
    locationsMenu.hidden = true

    centerOnCurrentLocationButtonIsHidden = centerOnCurrentLocationButton.hidden

    navInfoView.hidden = true
    searchResultsTableView.hidden = true
    cancelSearchButton.hidden = true

    profileTableView.hidden = true
    profileTableView.layer.cornerRadius = theme.cornerRadius

    profileTableView.layer.masksToBounds = false
    profileTableView.backgroundColor = theme.buttonBackgroundColor

    profileTableView.clipsToBounds = true

    searchResultsTableView.hidden = true
    searchResultsTableView.layer.cornerRadius = theme.cornerRadius

    searchResultsTableView.layer.masksToBounds = false
    searchResultsTableView.backgroundColor = theme.buttonBackgroundColor
    searchResultsTableView.clipsToBounds = true

    // ForceTouchRecognizer
    let forceTouches: Array<DFContinuousForceTouchGestureRecognizer> = [forceTouchRoutesButton, forceTouchLocationsButton]
    for f in forceTouches {
        f.timeout = 0.5
        f.forceTouchDelay = 0.3
        f.baseForceTouchPressure = 3.0
        f.triggeringForceTouchPressure = 6.0
        f.delegate = self
    }



    locationsButton.addGestureRecognizer(forceTouchLocationsButton)
    routesButton.addGestureRecognizer(forceTouchRoutesButton)


    // Search Bar
    HNKGooglePlacesAutocompleteQuery.setupSharedQueryWithAPIKey(GooglePlacesAPIKey)
    searchBar.delegate = self
    searchResultsTableView.delegate = self
    searchResultsTableView.dataSource = self
    self.automaticallyAdjustsScrollViewInsets = false
    searchBar.setBackgroundImage(UIImage(), forBarPosition: .Any, barMetrics: .Default)
    searchBar.barTintColor = UIColor.clearColor()

    // Vehicle TableViewSlider
    vehiclesImageSliderView = PRSlideView()
    vehiclesImageSliderView.delegate = self
    vehiclesImageSliderView.dataSource = self
    vehiclesImageSliderView.scrollDirection = .Horizontal
    vehiclesImageSliderView.infiniteScrollingEnabled = false
    vehiclesImageSliderView.registerClass(
        PRAlbumPage.self,
        identifier: PRAlbumPage.description()
    )


    // Browse Routes
    routesInMapAreaView.hidden = true
    filterView.hidden = true
    configureFilters()


    // Profile TableView
    tvc = UITableViewController()
    tvc.tableView = self.profileTableView
    profileTableView.delegate = self
    profileTableView.dataSource = self
    let refreshControl = UIRefreshControl()
    refreshControl.frameHeight = 40
    refreshControl.attributedTitle = NSAttributedString(string: String.localizedStringWithFormat(NSLocalizedString("Last update: %@",comment:"Refreshcontrol subtitle"),LastSync.users.timeAgoSinceNowOrNever()), attributes: [NSForegroundColorAttributeName:theme.textColor])
    weak var weakSelf: MapViewController? = self
    refreshControl.addTarget(weakSelf, action: #selector(MapViewController.tableRefresh), forControlEvents: UIControlEvents.ValueChanged)
    tvc.refreshControl = refreshControl

    let appDelegate = UIApplication.sharedApplication().delegate! as! AppDelegate
    if appDelegate.appWasCompletelyClosed && UD.mapUnfolding! {
        foldMapOpen()
    }
    else {
        switch CLLocationManager.authorizationStatus() {
        case CLAuthorizationStatus.NotDetermined:
            self.locManager = CLLocationManager()
            self.locManager.delegate = self
            self.locManager.requestAlwaysAuthorization()
        case CLAuthorizationStatus.Denied:
            dispatch_async(dispatch_get_main_queue()) {
                self.initializeAndAnimateMap(false)
            }
        default:
            dispatch_async(dispatch_get_main_queue()) {
                self.initializeAndAnimateMap(true)
            }
        }
    }

    let subMenuButtons: Array<UIButton> = [favoriteRoutesButton, createRouteButton, importRoutesButton, showRoutesButton, favoriteLocationsButton, createLocationButton, importLocationButton]
    for subMenuButton in subMenuButtons {
        subMenuButton.setLayerProperties(backgroundColor: UIColor.clearColor(), opacity: nil, cornerRadius: 12, borderColor: theme.tintColor, borderWidth: theme.borderWidth, shadowOffset: nil)
    }
    myTripsButton.setLayerProperties(backgroundColor: UIColor.clearColor(), opacity: nil, cornerRadius: 12, borderColor: theme.okGreenColor, borderWidth: theme.borderWidth, shadowOffset: nil)


    let closeButtons: Array<UIButton> = [closeNavInfoButton, closeRoutesInMapAreaButton, closeFilterViewButton]
    for button in closeButtons {
        button.layer.cornerRadius = 10
        button.setTitle("✕", forState: .Normal)
        button.titleLabel?.textAlignment = NSTextAlignment.Center
        button.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)
        button.titleLabel?.font = UIFont(name: "HelveticaNeue-Bold", size: 14)
        button.backgroundColor = theme.tintColor
    }

    routeAvoidanceSelector = WLHorizontalSegmentedControl(items: ["avoid Tolls","avoid Highway","avoid Ferries"])
    routeAvoidanceSelector.allowsMultiSelection = true
    routeAvoidanceSelector.addTarget(weakSelf, action: #selector(MapViewController.routeAvoidanceChanged), forControlEvents: UIControlEvents.ValueChanged)

    let segControlFont = UIFont.systemFontOfSize(11, weight: UIFontWeightMedium)
    let attr = Dictionary(dictionaryLiteral: (NSFontAttributeName, segControlFont))
    routeModeSelector.setTitleTextAttributes(attr, forState: UIControlState.Normal)

    routeModeSelector.selectedSegmentIndex = UD.routeMode!.rawValue
    vehicleTypeSelector.selectedSegmentIndex = UD.vehicleType!.rawValue
    setSelectedRouteAvoidances()
    routeAvoidanceSelector.tintColor = theme.tintColor
    guidanceToStartSwitch.setOn(UD.guideToStart!, animated: false)
    navInfoView.layer.masksToBounds = true
    vehicleTypeImageView.roundCorners(UIRectCorner.BottomRight, radius: theme.textViewCornerRadius)
    vehicleTypeImageView.roundCorners([UIRectCorner.TopLeft,UIRectCorner.BottomRight], radius: theme.textViewCornerRadius)
    vehicleTypeImageView.layer.masksToBounds = true

    NSNotificationCenter.defaultCenter().addObserver(
        self,
        selector: #selector(MapViewController.resigningActive),
        name: UIApplicationWillResignActiveNotification,
        object: nil
    )
    NSNotificationCenter.defaultCenter().addObserver(
        self,
        selector: #selector(MapViewController.becomeActive),
        name: UIApplicationDidBecomeActiveNotification,
        object: nil
    )

    NSNotificationCenter.defaultCenter().addObserver(
        self,
        selector: #selector(MapViewController.deviceRotated),
        name: UIDeviceOrientationDidChangeNotification,
        object: nil
    )

}
4b9b3361

Ответ 1

Ха-ха,

- @RJE... это был ваш комментарий, который заставил меня дважды проверить, не был ли я принудительно разворачивать необязательный. Если вы хотите получить награду, отправьте ответ, и я назначу его вам! Благодарю! - guido 5 часов назад "-

Баунти всегда важны,

В любом случае очень важно знать, что означает SIGTRAP. Это в основном исключение во время выполнения, а не ошибка. Поэтому, если вы не можете найти проблему, вам нужно проверить, есть ли какие-либо места, которые могут исключать курсор. (особенно с дополнительными типами Swift)

Обычно это может быть индекс массива из связанного или разворачиваемого нуля или любой подобной вещи. Также, если это происходит иногда или только на каком-то устройстве, есть возможность проблемы из-за различных задержек анимации пользовательского интерфейса (например, presentViewController withAnimation и попытки чего-то до его завершения.)

Но, честно говоря, я не вижу никаких проблем с вашим исходным кодом. Он не должен был разбиться.

Если исходная точка Storyboard не является UINavigationController, и вы забыли установить ее класс как CustomNavigationController. Затем он выйдет из строя ниже кода. (это ожидается в Swift).

let navController = window!.rootViewController as! CustomNavigationController

Но я не думаю, что это проблема. Coz он должен был разбиваться каждый раз на любом устройстве.

А также к тому времени, когда applicationDidBecomeActive вызывает окно, не будет nil. Таким образом, это может быть что-то еще, что вы делаете с navController после этой точки.

Или может быть, команда Apple проверила ваше приложение на неисправном устройстве:)

Ответ 2

Я получил одобрение.


UPDATE

В то время как я получил его одобрение, следующая сборка приложения снова была отклонена, по той же причине, в том же отчете о сбоях, снова указывающем на первую строку метода viewDidLoad.

Затем я радикально выбросил весь свой код из viewDidLoad в viewWillAppear следующим образом:

var viewLoaded = false

override func viewDidLoad() {
    super.viewDidLoad()
    // Do nothing
}

override func viewWillAppear(animated: Bool) {
    if !viewLoaded {

        // viewDidLoad code

        viewLoaded = true
    }

    // viewWillAppear code

}

Моя теория теперь заключается в том, что я обнаружил Apple Bug:

Я использую раскадровки, и мой rootViewController очень (очень) тяжелый. Много UIVIews, UILabels, MapView, Кнопки, Searcher, Встроенный TableView и т.д. Я предполагаю, что он разбился, потому что не были инициализированы не все элементы раскадровки при вызове viewDidLoad.

Если это действительно так (время покажет, когда я отправлю дополнительные сборки для просмотра), я думаю, что либо обнаружил ошибку в iOS (так как я должен иметь возможность ссылаться на IBOutlets из раскадровки в моем представленииDidLoad) или несоответствие в процесс просмотра приложения, по сравнению с реальными устройствами, использующими приложение (поскольку ни я, ни кто-либо из моих 400 бета-тестеров не столкнулись с этим сбоем).

КОНЕЦ ОБНОВЛЕНИЯ


Основываясь на комментарии RJE, я еще раз взглянул на свой AppDelegate, чтобы узнать, сильно ли я что-то разворачиваю. Я был, но, насколько мне известно, эти ценности никогда не были бы ничтожны, поэтому я не думал об этом, когда я впервые закодировал его. Наверное, должен.

В сборке, которая, наконец, получила одобрение, 3 вещи отличались от предыдущих, которые не получили одобрения.

  • В моем AppDelegate didFinishLaunchingWithOptions я сильно разворачивался NSBundle.mainBundle().infoDictionary!["CFBundleVersion"]!

Я изменил

if UD.appVersion == nil || UD.appVersion != "\(NSBundle.mainBundle().infoDictionary!["CFBundleVersion"]!)" {
    startClean()
    UD.appVersion = "\(NSBundle.mainBundle().infoDictionary!["CFBundleVersion"]!)"
}

к этому

var versionInInfoDictionary = "dummy"
if let infoDict = NSBundle.mainBundle().infoDictionary {
    if let bundleVersion = infoDict["CFBundleVersion"] as? String{
        versionInInfoDictionary = bundleVersion
    }
    else {
        printError("bundleVersion nil")
    }
}
else {
    printError("infoDic nil")
}

if UD.appVersion == nil || UD.appVersion != versionInInfoDictionary {
    startClean()
    UD.appVersion = versionInInfoDictionary
}
  1. В моем AppDelegate applicationDidBecomeActive я принудительно распаковывал window (определенный в моем классе AppDelegate как var window: UIWindow?)

Я изменил

func applicationDidBecomeActive(application: UIApplication) {

    // some code

    let navController = window!.rootViewController as! CustomNavigationController

    // some code
}

к этому

func applicationDidBecomeActive(application: UIApplication) {

    // some code
    self.continueDidBecomeActive()
}

func continueDidBecomeActive() {
    guard window != nil else {
        printError("Window still nil")
        NSTimer.scheduledTimerWithTimeInterval(0.3, target: self, selector: #selector(AppDelegate.continueDidBecomeActive), userInfo: nil, repeats: false)
        return
    }
    if let navController = window!.rootViewController as? CustomNavigationController {

        // some code

    }
}
  1. И, наконец, в моих настройках сборки у меня была идентификация подписи кода для 'Release', установленной для iOS Developer. Я изменил это на iOS Distribution.

Теперь я не думаю, что это было 3-е место, что привело к сбою моего приложения для команды проверки приложений, иначе оно бы разбилось на всех устройствах, а также на меня.

Таким образом, это должно быть либо номер 1, номер 2, либо и то, и другое. Честно говоря, я не знаю, и я все еще немного смущен, почему эти ценности ничтожны ни при каких обстоятельствах. Если есть еще какие-то идеи... Я бы хотел их услышать.