所以,我的应用程序(iOS,Swift 2.2,Xcode 7.3)被Beta App Review团队拒绝,因为它推出了.

更新从应用程序审查小组得到一个答案…它只是在iPad上崩溃,而不是在iPhone上.

事情是,我不能重现这个崩溃.即使在我的3个物理设备(iPhone 4S,iPhone6和iPad Air)上进行测试,也可以通过TestFlight内部测试进行干净安装或更新(与App Review Team正在审核的完全相同的构建和存档)

提取崩溃日志(从App Review Team收到)(符号):

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是UINavigationController的rootViewController,第210行包含:self.view.backgroundColor = UIColor.blackColor()

更新:
删除该行并提交另一个构建.相同的崩溃日志,现在崩溃在下一行:imageview.hidden = true

试图直接从我的设备上的Xcode“释放”配置运行,希望它会崩溃并指向正确的方向,但是,不会崩溃: – /
另外,非常有趣的是,我在同一个应用程序的前一个版本中也是一样的(也被拒绝).我向审查小组发送了类似于这个故事的回复,他们批准了它进行外部beta测试(没有任何变化).只有我的一个beta测试人员(总共aprox 300)在启动时报告了类似的崩溃.

在Sigtrap断点上进行了大量的搜索,但没有发现任何类似于我正在经历的事情.所以,我真的在这里亏损.我不能重现它,而崩溃日志并不指出我可以调查的任何方向.

更新:这是从App Review团队获得的完整的(象征性的)崩溃报告. (不包括二进制图像,所有看起来都很好).也许某些东西(其他线程可能吗?)为某人敲响钟.任何帮助或建议将不胜感激.

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中的代码正如我所提到的,我不认为我的viewDidLoad中的任何东西,因为它总是在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(),borderColor: theme.okGreenColor,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)
        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
    )

}

解决方法

我得到了批准.

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

}

我的理论现在是我发现了一个苹果Bug:

我正在使用storyboards,我的rootViewController非常(非常)沉重.许多UIVIews,UILabels,MapView,按钮,搜索器,嵌入式TableView等.我的猜测是它崩溃了,因为在调用viewDidLoad时并不是所有的storyboard元素都被初始化.

如果这是真的(时间会告诉我什么时候提交更多的构建以供审查)我想我在iOS中发现了一个错误(因为我应该能够从我的viewDidLoad中的故事板引用IBOutlets)或在审核过程中运行的差异该应用程序与运行该应用程序的实际设备相比(既不是我也不是我的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
}

>在我的AppDelegate applicationDidBecomeActive中,我强制解开窗口(在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

    }
}

>最后在我的构建设置中,我将“发布”的代码签名身份设置为iOS开发人员.我改为iOS分发.

现在,我不认为这是第三点,使我的应用程序崩溃的应用程序审查小组,否则它会崩溃在所有设备,也为我.

所以,它必须是1号,2号或两者.老实说,我不知道,我还是有点困惑,为什么这些价值观在任何情况下都是零.如果有更多的见解…我很乐意听到他们的话.

ios – 应用程序审核小组的EXC_BREAKPOINT(SIGTRAP).不可重现的更多相关文章

  1. ios – 尝试修复崩溃:QuartzCore – CA :: release_objects(X :: List *)

    我们的应用程序遇到了几次崩溃,想知道您是否有任何见解或有过类似的经历.我已经分享了下面的崩溃日志信息.运行iOS8.1.我们已经通过仪器,静态分析仪运行它,并且仍在努力指出问题.解决方法这里的问题是你在CoreAnimation没有预料到的对象上做了一个额外的发布,所以问题在你的代码中引入,但是当动画框架进行清理阶段时会暴露出来.要解决此问题,请使用性能分析.选择Allocationsprofil

  2. ios – “只在主线程上运行”异常是模拟器

    我得到一个“只运行在主线程”异常深处(或之后)事情只发生在模拟器上,而不是在IOS设备中进行调试.有什么机会我可以解决这个问题吗?

  3. ios – gpus_ReturnNotPermittedKillClient中有很多崩溃

    有没有办法解决或避免这个?

  4. ios – XCode 5.x Maverick在文件操作时崩溃

    tstart=0显然,.DS_Store文件让XCode感到困惑,删除所有这些文件似乎解决了这个问题.从粗略分析看来,问题只是由操作系统的早期版本创建的.DS_Store文件生成,因为新版本似乎没有触发问题像我这样想要在桌面上特定位置使用图标的人……)问题,我在我的系统上安装了一个单行脚本来清理所有.DS_Store文件的目录:我在XCode访问的目录上定期运行它,以便解决问题.

  5. ios – 异常类型:EXC_CRASH(SIGABRT)

    有没有人知道这次崩溃?解决方法这不是崩溃,因异常而中止.这意味着您的应用程序正在将错误数据传递给系统例程,并且例程说它很糟糕且无法继续,因此它会杀死您的应用程序.控制台应该显示出错的地方.可能发生的一个常见异常是尝试从一个只有n个对象的数组中获取第一个对象.控制台将显示一条消息.因此,请检查控制台以查看可能发生的情况.

  6. Android NDK和pthread

    如何正确使用pthread与AndroidNDK?解决方法Android的pthread功能是否有限?

  7. PHP pthread拓展使用和注意点

    这篇文章主要介绍了PHP pthread拓展使用和注意点,对此有需要的朋友们可以参考阅读下。

  8. PHP中使用pthread拓展

    这篇文章主要介绍了PHP中使用pthread拓展,本文讲述线程类的使用方法和线程类的概念和使用场景,以及具体的代码实现,以下就是详细内容,需要的朋友可以参考下

  9. 是否可以在Windows中对互斥锁进行静态初始化?

    pthread支持使用PTHREAD_MUTEX_INITIALIZER静态初始化pthread_mutex_t.是否有可能使用Windows互斥锁为互斥初始化实现类似的静态机制?不,由于Windows互斥锁是句柄,因此必须使用CreateMutex()初始化它们.请注意,使用PTHREAD_MUTEX_INITIALIZER的pthread_mutex_t的静态初始化不是真正的初始化,它将在第一

  10. PHP致命错误:require():无法解锁pthread锁

    我在DebianLinux上使用LAMP.Apache2.2.22-12,PHP5.4.4.有时候我收到这个错误,然后我无法重新加载页面或打开的页面,其中包括这个错误的文件.我有这样的错误后,我无法重新启动apacheRestartingwebserver:apache2(98)Addressalreadyinuse:make_sock:Couldnotbindtoaddress[::]:80(9

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部