gpt4 book ai didi

ios - 在 block 代码中返回 UIImage

转载 作者:行者123 更新时间:2023-11-28 22:20:13 25 4
gpt4 key购买 nike

我正在使用此代码返回图像:

- (UIImage *)loadThumbnailForImageForUser:(int)userID inFolder:(int)folderNumber withFileName:(NSString *)fileName ofSize:(NSString *)size{

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];
return img;
}

返回的图像始终为零。这是因为稍后调用了 completionBlock。有没有办法解决问题并返回图像?

最佳答案

我通常处理这个问题的方式是使用委托(delegate)模式:

@protocol ImageLoadingProtocol <NSObject>

@required
-(void) imageLoaded:(UIImage*) image;

@end

在您的图片加载器 header 中:

__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;

然后当 block 完成时,您的类将收到一条消息 imageLoaded: 并且您应该实现一个方法来处理它:

-(void) imageLoaded:(UIImage*) image
{
//Here is where your image is usable.
}

这是另一个使用 block 的解决方案:

- (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 中编写的

关于ios - 在 block 代码中返回 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20620515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com