Xcode 7に更新され、操作で画像がレンダリングされている間に次の (警告?) メッセージが表示されます。
CreateWrappedSurface() は、データ プロバイダーに基づく CGImageRef で失敗しました。
Xcode 6.4 では、このようなメッセージはありませんでした。
メッセージをスローしたコード部分を取得しました。
if (!self.originalImage) // @property (nonatomic, strong) UIImage *originalImage;
return;
CGImageRef originalCGImage = self.originalImage.CGImage;
NSAssert(originalCGImage, @"Cannot get CGImage from original image");
CIImage *inputCoreImage = [CIImage imageWithCGImage:originalCGImage]; // this results the console message
UIImage から直接取得するように CIIImage 作成者を置き換えました。
CIImage *originalCIImage = self.originalImage.CIImage;
NSAssert(originalCIImage, @"Cannot build CIImage from original image");
この場合、コンソール メッセージは表示されませんでしたが、「originalCIImage は nil でした」というアサートがありました。
UIImage のクラス リファレンスには次のように書かれています。
@property(nonatomic, readonly) CIImage *CIImage
UIImage オブジェクトが CGImageRef を使用して初期化された場合、プロパティの値は nil です。
だから私は元のコードをフォールバックとして使用しています:
CIImage *originalCIImage = self.originalImage.CIImage;
if (!originalCIImage) {
CGImageRef originalCGImageRef = self.originalImage.CGImage;
NSAssert(originalCGImageRef, @"Unable to get CGimageRef of originalImage");
originalCIImage = [CIImage imageWithCGImage:originalCGImageRef];
}
NSAssert(originalCIImage, @"Cannot build CIImage from original image");
問題は、コンソールにまだ警告メッセージが表示されることです。
以前にこのメッセージを受け取った人はいますか? その警告(?)メッセージを消すための解決策は何ですか?
ありがとう、 アダム