Как я обычно справиться с этой проблемой является использование шаблона делегата:
@protocol ImageLoadingProtocol <NSObject>
@required
-(void) imageLoaded:(UIImage*) image;
@end
в изображении загрузчика заголовка:
__weak id<ImageLoadingProtocol> delegate;
-(void) initWithDelegate:(id<ImageLoadingProtocol>) delegate;
//or
@property (nonatomic, weak) id<ImageLoadingProtocol> delegate
В вашем блоке:
[DropBlocks loadThumbnail:@"" ofSize:@"s" intoPath:filePath completionBlock:^(DBMetadata* metadata, NSError* error){
UIImage *img = [UIImage imageWithContentsOfFile:filePath];
[_delegate imageLoaded:img];
}];
И в классе, который создает ваш загрузчик изображений:
imageLoader = [[ImageLoader alloc] initWithDelegate:self];
//or
//imageLoader.delegate = self;
Затем, когда блок закончен ваш класс получит сообщение imageLoaded:
и вы должны реализовать метод, чтобы справиться с этим:
-(void) imageLoaded:(UIImage*) image
{
//Here is where your image is usable.
}
Вот еще одно решение с использованием блоков:
- (UIImage *)loadThumbnailForImageForUser:(int)userID inFolder:(int)folderNumber withFileName:
-(NSString *)fileName ofSize:(NSString *)size completionBlock:(void(^)(UIImage* image)) completionBlock
{
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"IMAGE%@%d", fileName, folderNumber]];
[DropBlocks loadThumbnail:@"" ofSize:@"s" intoPath:filePath completionBlock:^(DBMetadata* metadata, NSError* error)
{
UIImage *img = [UIImage imageWithContentsOfFile:filePath];
completionBlock(image);
}];
}
Предостережение: Следите за проблемами синтаксиса и проблемами управления памятью, я не писал это в IDE
Вы можете использовать некоторую стороннюю структуру, такую как SDWebImage (https://github.com/rs/SDWebImage) или AFNetworking (https://github.com/AFNetworking/AFNetworking), которые добавляют удобные категории в 'UIImageView' , например, '- (ничтожной) setImageWithURLRequest: (NSURLRequest *) URLRequest placeholderImage: (UIImage *) placeholderImage успех: (аннулируются (^) (NSURLRequest * запрос, NSHTTPURLResponse * ответ, UIImage * изображение)) успех неудача :(void (^) (запрос NSURLRequest *, ответ NSHTTPURLResponse *, ошибка NSError *)); ' –