gpt4 book ai didi

ios - dequeueReusableCellWithIdentifier 是强制性的以避免内存泄漏吗?

转载 作者:行者123 更新时间:2023-11-28 18:07:23 26 4
gpt4 key购买 nike

我使用几乎每个人都用来处理 cellForRowAtIndexPath 的“著名”样板代码:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"someCustomCellID"];  
if (cell == nil) // nothing to recycle from the queue: create a new cell

但这给我带来了很多问题,因为我的单元格包含我异步加载的图像,并且这两个功能(出队和异步加载)经常发生冲突。所以我每次都尝试创建一个新单元格并且它运行得很好而且很快。但我有一个疑问:即使我忽略返回值并每次都创建单元格,我是否仍应调用 dequeueReusableCellWithIdentifier 来释放内存?我想不再使用的单元会自动解除分配(因为它们应该如此),但我想知道缓存队列是否可能需要显式“释放”与出队调用...

最佳答案

dequeueReusableCellWithIdentifier 不是为了防止内存泄漏而设计的,而是为了性能而设计的(一种方法是减少内存使用)。当使用dequeue方法时,在有几行数据的情况下,滚动table view会顺畅很多。我建议您让异步加载与 dequeue 方法一起使用,尤其是当您在滚动时发现任何延迟时。如果您想了解如何执行此操作的示例,请参阅 Apple's LaxyTableImages Example .但是,如果您确定不想重用单元格,则只需在创建单元格时将 nil 作为 reuseIdentifier 传递即可。

关于ios - dequeueReusableCellWithIdentifier 是强制性的以避免内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9592177/

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