Я знаю, что это своего рода обман, но у меня пока нет достаточной репутации, чтобы комментировать исходный пост, и, хотя у меня нет ответа, у меня есть более полезная информация (конкретный пример). Модераторы, не стесняйтесь переместить это в нужное место.
При компиляции моего кода с использованием последней версии XCode 8 beta 6 (iOS 10 SDK) я получаю исключение "Завершение приложения из-за неперехваченного исключения" NSInvalidArgumentException ", причина: '- [UIDeviceRGBColor countByEnumeratingWithState: objects: count:]: unrecognized селектор отправлен в экземпляр 0x600000071340 '"
Это происходит во время вызова:
auto viewController = [[[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
Я выделил проблему, уменьшив мой проект до минимума, который скомпилирует и покажет проблему. Вы можете скачать его здесь:
Обратите внимание, что я достал много кода, почти все классы ушли, что приводит к множеству предупреждений (а не ошибок) для несуществующих классов, на которые ссылается xib. Но это не имеет значения, код все еще компилируется и отлично работает с iOS 9 SDK. Однако после компиляции с sdk iOS 10 он сбой как в симуляторе, так и на устройствах под управлением iOS 9.
Вы можете обойти проблему, изменив "#if 0" на "#if 1" в файле "HackForUnrecognizedSelectorInIOS10.m". Это добавляет категорию, определяющую отсутствующие селекторы для UIColor. Но, очевидно, вы не можете добавить это в код доставки, это просто временная мера остановки, чтобы продолжить разработку.
Я подал сообщение об ошибке (28153870). Но если у кого-то есть больше информации о том, как избежать этой проблемы без уродливых хаков, любая информация приветствуется.
Спасибо
Мишель Колман