ios - 无法识别的选择器 UIDeviceRGBColor countByEnumeratingWithState :objects:count:

标签 ios objective-c xcode ios10 xcode8-beta6

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

使用最新的 XCode 8 beta 6 (iOS 10 SDK) 编译我的代码时,出现异常“由于未捕获的异常‘NSInvalidArgumentException’而终止应用程序,原因:‘-[UIDeviceRGBColor countByEnumeratingWithState:objects:count:]: unrecognized选择器发送到实例 0x600000071340'"

这发生在通话期间:

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

我通过将我的项目削减到可以编译并仍然出现问题的最低限度来隔离问题。你可以在这里下载:

Example project

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

您可以通过在文件“HackForUnrecognizedSelectorInIOS10.m”中将“#if 0”更改为“#if 1”来解决此问题。这会添加一个类别,为 UIColor 定义缺少的选择器。但显然您不能将其添加到运输代码中,这只是继续开发的临时权宜之计。

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

谢谢

米歇尔·科尔曼

最佳答案

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

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIDeviceRGBColor length]: unrecognized selector sent to instance 0x600000479280'

而且我注意到只有在使用接口(interface)文件(即 Xib 和 Nib)初始化 View 时才会出现此问题。我通过以下方式解决了这个问题:

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

  2. 将突出显示的属性更改为“iOS 7.0 及更高版本”(或任何更高版本的 iOS) enter image description here

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

关于ios - 无法识别的选择器 UIDeviceRGBColor countByEnumeratingWithState :objects:count:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39318191/

相关文章:

ios - 如何在短时间内将新插入的 UITableViewCell 的 alpha 设置为 0

ios - Apple 的 TestFlight 提供旧版本

ios - 我在从导航堆栈中删除 ViewController 时遇到问题?

swift - 核心数据,初始化 managedObjectContext

IOS 界面 View - 最佳实践

ios - UITableViewCell 中的 UIPickerView - 如何选择值而不是滚动 TableView?

objective-c - 将选定的日期和时间保存到plist中

android - 如何设置 flutter 位置的间隔以接收数据

iphone - 使用 NSUrlConnection 但被竞争条件击败

objective-c - 无效的 Swift 支持/SwiftSupport 文件夹为空