繁体   English   中英

自定义CIKernel和iOS7

[英]Custom CIKernel and iOS7

我有一个支持运行iOS 7和8的设备(项目部署目标:7.0)的iOS项目,最近我开始使用iOS 8中引入的新API实现自定义CIKernel。

虽然代码可以在每个iOS 8设备中编译和运行,但是在每次尝试在iOS 7设备中运行时都会出现此错误:

dyld: Symbol not found: _OBJC_CLASS_$_CIColorKernel
  Referenced from: /var/mobile/Applications/...
  Expected in: /System/Library/Frameworks/CoreImage.framework/CoreImage
 in /var/mobile/Applications/...

产生错误的代码是这样的:

kernel = [CIColorKernel kernelWithString:kernelStr];

正如CIKernel.h声明的那样,iOS8中引入了kernelWithString:方法:

__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);

所以我的问题是:我如何才能使该应用程序同时在iOS 7和8设备上运行,而仅对iOS 7设备禁用我的自定义CIKernel功能? 那可能吗?

请注意,我已经从项目设置中将CoreImage.framework从'Required'更改为'Optional',并且该应用程序在iOS7.0设备上运行,但是说实话,这确实让人讨厌。

我还尝试了预处理器命令: __IPHONE_OS_VERSION_MIN_REQUIRED__IPHONE_OS_VERSION_MAX_ALLOWED但这些命令仅在编译时有用。

有什么线索吗?

尝试使用此:

Class colorKernelClass = NSClassFromString(@"CIColorKernel");
kernel = [colorKernelClass kernelWithString:str];

所以我的问题是:我如何才能使该应用程序同时在iOS 7和8设备上运行,而仅对iOS 7设备禁用我的自定义CIKernel功能? 那可能吗?

您可以在运行时检查操作系统的版本,如下所示:

NSString *osVer = [[UIDevice currentDevice] systemVersion]

这提供了一个字符串,您可以解析和提取主要版本...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM