Image を CALayer にロードするメソッドを書きました。これはコードです:
- (CGImageRef)loadImage:(NSString*)path {
// Get data image
CGImageRef image = NULL;
NSData *data = [NSData dataWithContentsOfFile:path];
CFDataRef imgData = (CFDataRef)data;
CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData (imgData);
// Get CGImage from CFDataRef
image = CGImageCreateWithJPEGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault);
// If the image isn't a JPG Image, would be PNG file
if (!image)
image = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault);
return image;
}
私はCALayerでこの方法を使用しています:
NSString *pathString = // my image path;
aLayer = [CALayer layer];
aLayer.contents = [self loadImage:pathString];
仕事です。ビューを (ガベージ コレクターを使用して) ファイナライズしましたが、アプリケーションにリークがあります。CFDataRef imgData をリリースする必要がありますか? Core Foundation ではガベージ コレクターが機能しないと読みました。
ありがとう、私の英語を許してください。