gpt4 book ai didi

iphone - 防止objc block 复制属性

转载 作者:行者123 更新时间:2023-12-01 17:09:27 27 4
gpt4 key购买 nike

我有一个分页的UITableView,一次只显示一项。每个项目都是从互联网上获取的图片。我使用block异步下载图像:

- (void)downloadImageForPost:(GifPost *)p atIndex:(NSInteger)index
{
[APIDownloader imageForSource:p.src
completion:^(NSData *data, NSError *error) {
if (self.currentIndex != index)
return;

[self.tableView
reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index
inSection:0]]
withRowAnimation:UITableViewRowAnimationNone];
}];
}

问题出在 if (self.currentIndex != index)中,在块外修改了 self.currentIndex。假设我为所有图片和 self.currentIndex = 0调用了此函数。如果我滚动到另一个索引,因为在执行时保存了 self.currentIndex,则我的if条件不起作用。

有没有一种方法可以防止块复制指定的变量。如果没有,我该怎么做才能表现出正确的行为?

PS:我对 data不做任何事情,只是调用此函数将其放入我的缓存中。

最佳答案

正如Andrew Madsen所说,self.currentIndex是一个方法调用。我的错误来自更新self.currentIndex的地方。

关于iphone - 防止objc block 复制属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15421223/

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