iOS 13 вылетает при запуске - PullRequest
0 голосов
/ 01 октября 2019

При обновлении до iOS 13.0 происходит сбой приложения при запуске. Пользователи сообщают о сбое приложения при новом запуске.

Я получаю это от Crashlytics:

Сразу после этого, [AppDelegate application:didFinishLaunchingWithOptions:] вызывает viewDidLoad: на ViewController, который используется очень позднов потоке приложения или, может быть, никогда.

Что очень странно с ним: - Я не могу воспроизвести, для каждого iPhone, который я тестирую, приложение работает просто отлично. Это не работает для 10% наших пользователей.

  1. Может ли Crashlytics ошибаться? - и он сообщает неправильно, потому что Crashlytics еще не инициализирован

  2. Имя ViewController-а, где появляется ошибка, это «ViewController» - это может быть конфликтом? Кажется, что этот, он не инициализирован должным образом. В viewDidLoad: у меня есть это:

    self.tabButtons = @[_btnOne, _btnSecond, _btnThird, _btnFourth]; - эта строка сообщается в Crashlytics с

    "Fatal Exception: NSInvalidArgumentException *** - [__ NSPlaceholderArray initWithObjects: count:]: попыткивставить ноль объекта из объектов [0] "

  3. Как я могу воспроизвести?

Вот код в AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...............................
    [self showFirstScreen];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
    return YES;
}


-(void) showFirstScreen {
    NSInteger companyAddedGet = [[NSUserDefaults standardUserDefaults] integerForKey:@"companyAdded"];
    (companyAddedGet == -1) ? [self showAddNewCompanyViewController] : [self login];
}

-(void) login {
    ([[NSUserDefaults standardUserDefaults] objectForKey:@"LOGIN_DETAIL"]!=nil) ? [self automaticLogin] : [self showLogin];
}

-(void) automaticLogin {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Launch Screen" bundle:nil];
    UIViewController *launchScreen = [storyboard instantiateViewControllerWithIdentifier:@"LaunchScreenVC"];
    nav = [[UINavigationController alloc] initWithRootViewController:launchScreen];
    nav.navigationBarHidden = YES;
    [FIRAnalytics logEventWithName:@"login_automat" parameters: nil];
    [self fetchCompanyData];
}

-(void) showLogin {
    viewController = [[loginViewController alloc] initWithNibName:@"loginViewController" bundle:nil];
    nav = [[UINavigationController alloc] initWithRootViewController:viewController];
    nav.navigationBarHidden = YES;
}

-(void) showAddNewCompanyViewController {
    .....
    AddNewCompanyVC *addNewVC = [[AddNewCompanyVC alloc] initWithNibName:@"AddNewCompanyVC" bundle:nil];
    [(AppObj).nav pushViewController:addNewVC animated:YES];
}

enter image description here

1 Ответ

0 голосов
/ 01 октября 2019

Проблема была в следующем: (я не изменяю вопрос - но я поставлю здесь свое решение).

  • приложение не использовало начальный viewcontroller, объявленный в Main.storyboard, потому что каждый vc был инициализирован в нужный момент. Что было хорошо. Но заявленная Main.storyboard не нужна. Также начальный вид контроллера.

  • использованный начальный VC был ..... "сюрпризом" .... ViewController, где появляется ошибка.

Кроме того, ни один из UITests не начался, из-за этого. Я не понял, почему.

...