UIImageView
新しい 'loadImageNamed:' メソッドでを拡張しようとしています。このメソッド内で使用しますdispatchQueue
がXCode
、プロパティ「dispatchQueue」がタイプ「UIImageView」のオブジェクトに見つからないというエラーをスローします。
誰かヒントをくれませんか!? ありがとう!
#import "UIImageView+LazyPicLoad.h"
@implementation UIImageView (LazyPicLoad)
-(void)loadImageNamed:(NSString *)name {
dispatch_async(self.dispatchQueue, ^{
NSData *imageData;
if (name) {
if ([UIScreen mainScreen].scale == 2.0)
imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[name stringByAppendingString:@"@2x"] ofType:@"png"]];
else
imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:name ofType:@"png"]];
}
CGImageRef decompressedImage = NULL;
if (imageData) {
CGDataProviderRef imageDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)imageData);
CGImageRef image = CGImageCreateWithPNGDataProvider(imageDataProvider, NULL, NO, kCGRenderingIntentDefault);
CGContextRef bitmapContext = CGBitmapContextCreate(NULL, CGImageGetWidth(image), CGImageGetHeight(image), CGImageGetBitsPerComponent(image), CGImageGetWidth(image) * 4, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little);
CGContextDrawImage(bitmapContext, CGRectMake(0, 0, CGImageGetWidth(image), CGImageGetHeight(image)), image);
decompressedImage = CGBitmapContextCreateImage(bitmapContext);
CGDataProviderRelease(imageDataProvider);
CGImageRelease(image);
CGContextRelease(bitmapContext);
}
dispatch_sync(dispatch_get_main_queue(), ^{
if (decompressedImage)
self.image = [UIImage imageWithCGImage:decompressedImage];
});
if (decompressedImage)
CGImageRelease(decompressedImage);
});
}
@end