自定义 CIKernel 和 iOS7
Custom CIKernel and iOS7
我有一个 iOS 项目支持设备 运行ning iOS 7 和 8(项目部署目标:7.0),我最近开始使用自定义 CIKernel在 iOS 8.
中引入了新的 API
虽然代码在每个 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];
kernelWithString:
方法在 iOS8 中引入,正如 CIKernel.h 声明的那样:
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
所以我的问题是:如何在 iOS 7 和 8 设备上制作应用程序 运行 并且只为 iOS 7 设备禁用我的自定义 CIKernel 功能?那可能吗?
请注意,我已将项目设置中的 CoreImage.framework 从 'Required' 更改为 'Optional',并且 iOS7.0 设备中的应用程序 运行s 但是老实说,感觉真的很糟糕。
我也试过预处理器命令:__IPHONE_OS_VERSION_MIN_REQUIRED
和 __IPHONE_OS_VERSION_MAX_ALLOWED
但这些只对编译时有用。
有什么线索吗?
So my question is: How can I make the app run on both iOS 7 and 8 devices and just have my custom CIKernel feature disabled for the iOS 7 devices? Is that possible?
您可以像这样在运行时检查 OS 的版本:
NSString *osVer = [[UIDevice currentDevice] systemVersion]
这给出了一个字符串,您可以解析并提取主要版本...
试试这个:
Class colorKernelClass = NSClassFromString(@"CIColorKernel");
kernel = [colorKernelClass kernelWithString:str];
我有一个 iOS 项目支持设备 运行ning iOS 7 和 8(项目部署目标:7.0),我最近开始使用自定义 CIKernel在 iOS 8.
中引入了新的 API虽然代码在每个 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];
kernelWithString:
方法在 iOS8 中引入,正如 CIKernel.h 声明的那样:
__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
所以我的问题是:如何在 iOS 7 和 8 设备上制作应用程序 运行 并且只为 iOS 7 设备禁用我的自定义 CIKernel 功能?那可能吗?
请注意,我已将项目设置中的 CoreImage.framework 从 'Required' 更改为 'Optional',并且 iOS7.0 设备中的应用程序 运行s 但是老实说,感觉真的很糟糕。
我也试过预处理器命令:__IPHONE_OS_VERSION_MIN_REQUIRED
和 __IPHONE_OS_VERSION_MAX_ALLOWED
但这些只对编译时有用。
有什么线索吗?
So my question is: How can I make the app run on both iOS 7 and 8 devices and just have my custom CIKernel feature disabled for the iOS 7 devices? Is that possible?
您可以像这样在运行时检查 OS 的版本:
NSString *osVer = [[UIDevice currentDevice] systemVersion]
这给出了一个字符串,您可以解析并提取主要版本...
试试这个:
Class colorKernelClass = NSClassFromString(@"CIColorKernel");
kernel = [colorKernelClass kernelWithString:str];