iOS EXC_BAD_ACCESS (код = 1, адрес = 0x0) сбой только на iOS 9 - PullRequest
0 голосов
/ 04 июля 2018

Я заставляю приложение работать с другой командой, другая команда развернула для меня среду И я импортирую эти рамки в мое приложение.

И я пытаюсь собрать с моими тестирующими устройствами, это iPhone 8 Plus (iOS 11), iPhone 7 Plus (iOS 10), два iPhone X (iOS 11), iPhone Pro (iOS 11) выше устройства также работают нормально ,

Но не работает с iPhone 5c (iOS 9.3), iPad Mini 1 (iOS 9.3). Они работают только при первой сборке только с Xcode, после отсоединения кабеля открывайте приложение во второй раз, оно всегда вылетает после образа запуска.

Код в appdelegate.h

@property (strong, nonatomic) FrameworkViewController *InfoVC;
@property (strong, nonatomic) MyNavigationViewController *conNav;

Код инициализации в моем appdelegate.m

NSBundle *myframeworkBundle = [NSBundle bundleForClass:[FrameworkManager class]];
InfoVC = [[FrameworkViewController alloc]initWithNibName:@"FrameworkViewController" bundle:myframeworkBundle];
conNav = [[MyNavigationViewController alloc] initWithRootViewController:InfoVC];
InfoVC.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
                                                initWithImage:[UIImage imageNamed:@"leftMenu_icon.png"] style:UIBarButtonItemStylePlain
                                                target:self
                                                action:@selector(myfunction:)];
conNav.tabBarItem.title=@"TAP_Information";
conNav.tabBarItem.image=[UIImage imageNamed:@"tab_info.png"];

Я добавил точку останова, и InfoVC вернул ноль с этими iPhone 5c и Mini 1. Но на этих работах устройство покажет адрес. И я думаю, что infoVC равен nil, и я пытаюсь установить leftbarButtonItem в объект nil, чтобы вызвать сбой, но как это исправить? Я пытаюсь добавить main_queue, кажется, не работает.

------------- Обновление -------------

Я пытаюсь добавить NSLog, чтобы увидеть эти nil-объекты, и обнаружил, что NSlog может распечатать действительный адрес, ноль является причиной сбоя приложения. Теперь он случайно зависал только на устройстве iOS 9. Все сбои EXC_BAD_ACCESS (код = 1, адрес = 0x0).

Журнал ошибок устройства 1 Журнал ошибок устройства2

1 Ответ

0 голосов
/ 04 июля 2018

Если вам был предоставлен файл .framework, я бы порекомендовал поиск вашего NSBundle с помощью одной из следующих функций:

+ (NSBundle *)bundleWithIdentifier:(NSString *)identifier

+ (instancetype)bundleWithPath:(NSString *)path

Как указано в документации :

Этот метод обычно используется фреймворками и плагинами для определения местоположения собственного пакета во время выполнения. Этот метод может быть несколько более эффективным, чем попытка найти пакет с помощью метода bundleForClass :. Однако, если первоначальный поиск уже загруженного и кэшированного пакета с указанным идентификатором завершается неудачно, этот метод использует потенциально трудоемкую эвристику для определения местоположения пакета. В качестве оптимизации вы можете использовать метод bundleWithPath: или bundleWithURL: вместо этого, чтобы избежать обхода файловой системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...