layoutSubviews中的奇数枚举内存问题

时间:2015-04-30 06:59:12

标签: ios uitableview memory-management layoutsubviews

在uitableviewcell的layoutSubviews中,有像

这样的逻辑
switch(enum_instance){ }

enum_instance已从某个地方更改,例如在一个计时器中更改,然后setNeedLayout更改为触发layoutSubviews

但layoutSubviews中的enum_instance不会更新。这个错误吗?或者我做错了什么?

谢谢,

1 个答案:

答案 0 :(得分:0)

这是因为UITableViewCell被回收了。当tableView被调用时,滚动dequeueReusableCellWithIdentifier:将会随机播放单元格。这意味着我会在错误的单元格上调用layoutIfNeeded(在滚动之后,该单元格可能被分配给另一个indexPath)。只有tableView:cellForRowAtIndexPath:才能设置单元属性的安全位置。

更简单的方法是重新计算tableView:heightForRowAtIndexPath:tableView:cellForRowAtIndexPath:中的单元格。可以通过调用reloadRowsAtIndexPaths:withRowAnimation:为要重绘的单元格提供indexPath数组来重新触发此方法。