14

我知道这是一种欺骗,但我还没有足够的声誉来评论原始帖子,虽然我没有答案,但我确实有更多有用的信息(一个具体的例子)。版主,请随意将其移动到适当的位置。

使用最新的 XCode 8 beta 6 (iOS 10 SDK) 编译我的代码时,我收到一个异常“由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'-[UIDeviceRGBColor countByEnumeratingWithState:objects:count:]: unrecognized selector sent to实例 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 缺少的选择器。但显然你不能将它添加到运输代码中,这只是继续开发的临时权宜之计。

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

谢谢

米歇尔·科尔曼

4

2 回答 2

41

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

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UIDeviceRGBColor 长度]:无法识别的选择器发送到实例 0x600000479280”

我注意到这个问题只发生在使用接口文件(即 Xib 和 Nib)初始化视图时。我通过以下方式解决了这个问题:

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

  2. 将突出显示的属性更改为“iOS 7.0 及更高版本”(或任何更高版本的 iOS) 在此处输入图像描述

然后再次编译并运行您的项目,这应该可以解决您的问题,尽管我不确定这背后的原因。我对您的示例项目进行了同样的尝试,它也解决了这个问题。

于 2016-09-06T06:38:21.340 回答
4

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

于 2016-11-05T10:25:16.907 回答