2016-10-25 2 views
1

Следующий код отлично работает в Swift2.2 iOS7 +, Swift3.0 iOS8 +, будет разбиваться только в Swift3.0 iOS7. let context = CIContext(options: nil) Swift3.0 Xcode8 iOS7 CIContext (опции: nil) Crash

Информационный консоль:

- [CIContext initWithOptions]: непризнанные селектор направлен например 0x147366e0 2016-10-25 17: 32: 27,903 CMBMobile DEV [1017: 4403] *** Нагрузочного приложение из-за неперехваченное исключением 'NSInvalidArgumentException', причину: '- [CIContext initWithOptions]: непризнанного селектор отправляется например 0x147366e0'

Я попытался чан ge it в let context = CIContext() Но, кажется, экземпляр контекста не был инициализирован для его адреса 0x00000000. И когда я звоню context.createCGImage(ciimage, from: originRect) возвращает неожиданный ноль.

+0

Это, вероятно, Xcode 8 ошибка. [Cicontext-initwithoptions-непризнанный селектор направил к примеру] (http://stackoverflow.com/questions/39570644/cicontext-initwithoptions-unrecognized-selector-sent -to-instance-0x170400960) исправить – Xingxing

ответ

0

As Swift 3 совместим только для iOS 8+, он рушится.

0

В Swift3.0 это ошибка Apple. Вы можете создать категорию для 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]) 
Смежные вопросы