为什么我收到 CIFilter 的 "unrecognized selector sent to class" 错误?

Why am I getting an "unrecognized selector sent to class" error for CIFilter?

此代码适用于 iPad 2 模拟器,但不适用于我的物理 iPad 2(即 iOS 7.0.6 上的 运行):

var fade = CIFilter(name: "CIExposureAdjust", withInputParameters:["inputEV" : -2.0 ])

完整的错误消息说:

[CIFilter filterWithName:withInputParameters:]: unrecognized selector sent to class 0x392d8d9c 2015-07-05 23:12:37.106 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[CIFilter filterWithName:withInputParameters:]: unrecognized selector sent to class 0x392d8d9c'

勾选the official documentation of + filterWithName:withInputParameters:

+ filterWithName:withInputParameters:

Availability
Available in iOS 8.0 and later.

由于您的 iPad 在 iOS 7 上是 运行,此方法不可用,因此您的应用程序崩溃了。

一些可能的解决方案:

  1. 使用- respondsToSelector:检查方法是否存在。

  2. 检查当前基础版本号,NSFoundationVersionNumber是否高于NSFoundationVersionNumber_iOS_7_1

  3. 将 iOS 8 作为您应用的最低要求。