gpt4 book ai didi

iphone - 我得到 didreceivememorywarning uitableview 使用 AFNetworking 下载图像?

转载 作者:行者123 更新时间:2023-11-29 10:56:43 26 4
gpt4 key购买 nike

大家好,我有一个 UITableView,我使用 AfNetworking 加载非常大的图像。但是,当 didreceivememorywarning 被击中时,我的应用程序崩溃了。这是我的代码:

AFNetworking+uiimageview.m 中,我按照建议添加了这个:

@implementation AFImageCache

- (id)init
{
self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didReceiveMemoryWarning)
name:UIApplicationDidReceiveMemoryWarningNotification
object:nil];
}
return self;
}

- (void)didReceiveMemoryWarning
{
DebugLog(@"AFNetworking DID RECEIVED MEMORY WARNING ");
[self removeAllObjects];
}

而我在 uitableview 中的代码如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
TousCell *tvCell;
NSArray *nib;
nib = [[NSBundle mainBundle] loadNibNamed:@"TousCell" owner:self options:nil];
tvCell = [nib objectAtIndex:0];

tvCell.lbltitle.text=[[dict valueForKey:@"message"]objectAtIndex:i];

[tvCell.imgPhoto setImageWithURL:[NSURL URLWithString: [NSString stringWithFormat:@"http://test.com/%@", [[dict valueForKey:@"photo"]objectAtIndex:i]]]];

可能是我每次都在重新创建单元格?但我确信它链接到图片下载,因为图片有时很大(大小约为 2 - 3 Mb?)。

最佳答案

您每次都在重新创建表格单元格,因此如果图像不同,它们将占用大量空间。您必须使用

[tableView dequeReusableCellWithIdentifier:]
方法并在 View Controller View 中注册您的 Nib 确实使用以下方法加载:

[tableView registerNib:forCellReuseIdentifier:]

方法。

另请注意,如果图像很大,AFNetworking 可以让您在返回给调用者之前缩小它们的尺寸。如果您需要将大图像放在小单元格上(例如,表格 View 中的那个),这将特别有用。请注意,AFNetworking 不提供调整大小的功能,但会在两个不同的 block 中返回图像:一个在后处理之前,一个在后处理之后。

关于iphone - 我得到 didreceivememorywarning uitableview 使用 AFNetworking 下载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17964862/

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