Unrecognized selector UIDeviceRGBColor countByEnumeratingWithState: objects: count:
Я знаю, что это своего рода обман, но у меня пока нет достаточной репутации, чтобы комментировать исходный пост, и, хотя у меня нет ответа, у меня есть более полезная информация (конкретный пример). Модераторы, не стесняйтесь переместить это в нужное место.
При компиляции моего кода с использованием последней версии 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). Но если у кого-то есть больше информации о том, как избежать этой проблемы без уродливых хаков, любая информация приветствуется.
Спасибо
Мишель Колман
Ответы
Ответ 1
Когда я пытаюсь скомпилировать и запустить мой проект с той же конфигурацией (XCode 8 beta 6, iOS 10 SDK), я столкнулся с аналогичной проблемой, за исключением того, что мое сообщение об ошибке:
*** Завершение приложения из-за неперехваченного исключения "NSInvalidArgumentException", причина: '- [UIDeviceRGBColor length]: непризнанный селектор, отправленный в экземпляр 0x600000479280'
И я заметил, что эта проблема возникает только тогда, когда представление является init с использованием файлов интерфейса, то есть Xib и Nib. Я решил эту проблему:
-
Откройте файл интерфейса на правой панели, перейдите на вкладку "Инспектор файлов".
-
Измените атрибут, выделенный для "iOS 7.0 и более поздних версий" (или любой другой версии iOS позже)
![введите описание изображения здесь]()
Затем снова скомпилируйте и запустите свой проект, это должно исправить вашу проблему, хотя я не уверен в этой причине. Я попробовал то же самое с вашим образцовым проектом, и он также решает проблему.
Ответ 2
В моем случае мне нужно было изменить цель развертывания проекта на 8.0 в общих настройках продукта. Благодаря подсказке из принятого ответа!