无法识别的select器UIDeviceRGBColor countByEnumeratingWithState:objects:count:

我知道这是一种愚蠢的行为,但是我还没有足够的声望来评论原文,虽然我没有答案,但我确实有更多有用的信息(一个具体的例子)。 版主,随时将其移动到适当的位置。

当使用最新的XCode 8 beta 6(iOS 10 SDK)编译我的代码时,我得到一个exception“由于未捕获的exception'NSInvalidArgumentException',原因:' – [UIDeviceRGBColor countByEnumeratingWithState:objects:count:]:无法识别的select器实例0x600000071340'“

这在通话过程中发生:

auto viewController = [[[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; 

我已经把我的项目削减到最低限度,将编译和仍然存在问题孤立的问题。 你可以在这里下载:

示例项目

请注意,我拿出了很多代码,几乎所有的类都消失了,这导致了从xib引用的不存在的类的很多警告(而不是错误)。 但是这并不重要,代码仍然可以在iOS 9 SDK中编译和运行。 然而,在使用iOS 10 sdk编译之后,它在模拟器和运行iOS 9的设备上都崩溃了。

您可以通过在文件“HackForUnrecognizedSelectorInIOS10.m”中将“#if 0”更改为“#if 1”来解决该问题。 这添加了一个类别,用于定义UIColor的缺失select器。 但显然你不能将其添加到运输代码中,这只是暂时的权宜之计。

我提交了一个错误报告(28153870)。 但如果任何人有更多的信息,如何避免这个问题没有丑陋的黑客,任何信息是值得欢迎的。

谢谢

米歇尔·科尔曼

当我尝试使用相同configuration(XCode 8 beta 6,iOS 10 SDK)编译和运行我的项目时,遇到了类似的问题,除了我的错误消息是:

***终止应用程序由于未捕获的exception“NSInvalidArgumentException”,原因:' – [UIDeviceRGBColor长度]:无法识别的select发送到实例0x600000479280'

我注意到这个问题只发生在视图初始化时使用接口文件,即Xib和Nib。 我解决了这个问题:

  1. 打开您的界面文件,在右侧面板中,导航到文件检查器选项卡。

  2. 将突出显示的属性更改为“iOS 7.0及更高版本”(或以后的任何iOS版本) 在这里输入图像说明

然后再编译和运行你的项目,这应该解决你的问题,但我不知道背后的原因。 我对你的示例项目也一样,它也解决了这个问题。

就我而言,我需要在产品常规设置中将项目部署目标更改为8.0。 感谢来自接受答案的提示!