以下代码在iOS7+的Swift2.2、iOS8+的Swift3.0中运行良好,只会在Swift3.0 iOS7中崩溃。let context = CIContext(options: nil)
控制台信息:
-CIContext initWithOptions::未识别的选择器发送给实例0x147366e0 2016-10-25 17:32:27.903 CMBMobile due 1017:4403*由于未识别的异常“NSInvalidArgumentException”,原因:'-CIContext initWithOptions::未识别的选择器发送到实例0x147366e0‘
我试图将其转换为let context = CIContext(),但当调用context.createCGImage(ciimage, from: originRect)时,它的地址是0x00000000.And,因此似乎没有初始化上下文实例。
发布于 2017-01-30 11:45:33
由于Swift 3只兼容于iOS 8+,所以它正在崩溃。
发布于 2017-05-18 03:28:11
在Swift3.0中,这是苹果公司的一个bug。您可以为CIContext创建一个类别。
#import <CoreImage/CoreImage.h>
@interface CIContext (FixBug)
+ (CIContext *)swiftContextWithOptions:(NSDictionary<NSString *, id> *)options;
@end
#import "CIContext+FixBug.h"
@implementation CIContext (FixBug)
+ (CIContext *)swiftContextWithOptions:(NSDictionary<NSString *,id> *)options {
return [CIContext contextWithOptions:options];
}
@end你应该使用这个函数。
let context = CIContext.swiftContext(options: [kCIContextUseSoftwareRenderer: false])https://stackoverflow.com/questions/40236571
复制相似问题