gpt4 book ai didi

iOS——访问 block 内的本地变量

转载 作者:行者123 更新时间:2023-11-29 10:48:08 24 4
gpt4 key购买 nike

我有一些代码如下:

companyLogo = nil;


[DLImageLoader loadImageFromURL:image_url
completed:^(NSError *error, NSData *imgData) {
if (error == nil) {

__block UIImage *companyLogo = [UIImage imageWithData:imgData];

} else {
// if we got error when load image
}
}];

我正在尝试将从 DLImageLoader block 返回的数据分配给 companyLogo。我该怎么做?

最佳答案

您只需使用 __block 关键字定义局部变量即可。

__block UIImage* companyLogo = nil;

[DLImageLoader loadImageFromURL:image_url
completed:^(NSError *error, NSData *imgData) {
if (error == nil) {
companyLogo = [UIImage imageWithData:imgData];
} else {
// if we got error when load image
}
}];

在您发布的示例中,您在 block 内重新声明了变量,因此“隐藏”了在 block 外声明的变量。相反,我们只声明一次(在 block 外),并添加 __block 关键字以指示我们希望此变量在 block 内可持久修改。

您可以在此处阅读有关 __block 关键字的更多信息:What does the "__block" keyword mean? .本质上它告诉编译器如何处理变量的内存管理,以便变量的真实内存位置在 block 内可见,而不是变量内容的副本。

关于iOS——访问 block 内的本地变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21639817/

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