iOS 11.3 и Xcode 9.3, вызывающие сбои при запуске приложения Obj-C - PullRequest
0 голосов
/ 30 апреля 2018

Так что это странно ... у нас есть приложение, написанное на Obj-C, и до любого обновления до iOS 11.3 оно работало нормально. Обновление 11.3 сломало его ... однако с Xcode 9.3 и новым компилятором мы получаем ту же ошибку на любом устройстве. Похоже, что Apple сломала что-то в SDK.

К тому же, похоже, что если бы они действительно что-то сломали в SDK, то у ВСЕХ была бы эта проблема. Так что я обращаюсь к вам, ТАКОЙ разум, чтобы помочь мне понять это!

ПРИМЕЧАНИЕ: Просто чтобы быть предельно ясным: это старое приложение, написанное на Obj-C, а не на Swift, и поддерживающее его только в течение некоторого времени.

Таким образом, нарушающий блок кода очень прост:

- (UINavigationController *)controllerForCategories: (NSArray *)categories titled:(NSString *)title
{
    DocumentViewController *dc = [[DocumentViewController alloc]initWithCategories:categories titled:title];
    UINavigationController *nc = [[UINavigationController alloc]initWithRootViewController:dc];
    [self addChildViewController:nc];
    // ERROR HAPPENS ON THIS ^^ LINE
    [nc didMoveToParentViewController:self];
    [self.contentPanel addSubview:nc.view];
    nc.view.frame = self.contentPanel.bounds;
    return nc;
}

Теперь, согласно документации Apple, все должно быть в порядке. Если бы мы переопределили addChildViewController (), у нас могла бы быть проблема, но мы не сделали этого, мы просто вызываем метод. Аргумент с именем 'nc' является классом SDK, который расширяет UIViewController, поэтому он является допустимым аргументом для рассматриваемого метода. Однако на 11.3 (или на всех версиях iOS с Xcode 9.3 мы получаем эту ошибку КАЖДЫЙ ВРЕМЯ, которую мы запускаем, на любом устройстве:

2018-04-25 14: 42: 18.792216-0700 Steri-Vac GS [1090: 855706] - [MasterNavigationViewController _viewControllerSubtreeDidGainViewController:]: нераспознанный селектор отправлен в экземпляр 0x101210100 2018-04-25 14: 42: 18.792662-0700 Steri-Vac GS [1090: 855706] * Завершение приложения из-за необработанного исключения NSInvalidArgumentException, причина: «- [MasterNavigationViewController _viewControllerSubtreeDidGainViewController:]: нераспознанный селектор отправлен на экземпляр 0x101210100 ' * Первый вызов стека вызовов: (0x186c4b164 0x185e94528 0x186c58628 0x1905c6188 0x186c50b10 0x186b35ccc 0x19029a964 0x19029d2c0 0x100a4941c 0x100a48bec 0x190205a00 0x1902055d8 0x19020c1a4 0x190209404 0x1902782e8 0x100a77a24 0x1902742c4 0x190465bc4 0x19046aa14 0x1907062a8 0x1909de100 0x190705f0c 0x19070676c 0x190e8b7c0 0x190e8b664 0x190bf92cc 0x190d923cc 0x190bf917c 0x1909dd760 0x190469158 0x19087edbc 0x18930e1f0 0x189316af8 0x100bb928c 0x100bc59e4 0x1893427f8 0x18934249c 0x189342a38 0x186bf377c 0x186bf36fc 0x186bf2f84 0x186bf0b5c 0x186b10c58 0x1889bcf84 0x1902695c4 0x100a51994 0x18663056c) libc ++ abi.dylib: завершается с неисследованным исключением типа NSException

Я подал ошибку в Apple и представил код для ее поддержки, но я подумал, что я должен проверить с умом доверия, чтобы узнать, есть ли у кого-нибудь что-нибудь, на что я мог бы посмотреть в то же время. На данный момент наше приложение бесполезно, и 40% моих специалистов по обслуживанию на местах уже обновились до 11.3, поэтому для нас это становится критической проблемой.

Заранее спасибо, ребята!

1 Ответ

0 голосов
/ 25 мая 2018

Apple ответила на мою ошибку!

Оказывается, что наш класс расширяет UIViewController и реализует свойство с именем navigationController, которое является другим экземпляром UIViewController, в то время как UIViewController имеет свойство, называемое navigationController ..., является экземпляром UINavigationController. Хитрость заключалась в том, чтобы просто переименовать наш navigationController в navController. Конфликт разрешен.

Реальный вопрос заключается в том, почему это перестало работать только после обновления до Xcode 9.3 и фактически не ломало приложение, пока наши пользователи не обновились до iOS 11.3. Под 11.2 оригинальное приложение работало нормально. И после обновления до Xcode 9.3 приложение компиляции не будет работать ни на одной версии iOS.

ОЧЕНЬ странно!

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