UITableViewCell - prepareForReuse和dequeueReusableCellWithIdentifier

时间:2012-09-12 15:08:28

标签: objective-c ios uitableview grand-central-dispatch

检查此GitHub projectarticle。 通过自定义单元格的 prepareForReuse 方法(JKCallbacksTableViewCell类)将通知发送到表(RootViewController类),该表由 tableViewCellIsPreparingForReuse 方法观察。此方法重置关联键和单元格的图像视图。

那么,为什么作者更倾向于通过通知发送它而不是在从表的 dequeueReusableCellWithIdentifier 方法获取非零单元后重置它们?

根据documentation of UITableViewCell,在dequeueReusableCellWithIdentifier之前调用prepareForReuse。

  

如果UITableViewCell对象是可重用的 - 也就是说,它具有重用标识符 - 在从UITableView方法dequeueReusableCellWithIdentifier返回对象之前调用此方法:。

我测试过,当dequeueReusableCellWithIdentifier返回一个非nill值时,它会调用prepareForReuse。

作者在JKCallbacksTableViewCell.h中评论了应用程序逻辑分离,但我认为这是一种矫枉过正;使用异步调度优化性能,但发送这些慢速通知以重置某些属性......或者我是否遗漏了一些关于GCD的内容?

1 个答案:

答案 0 :(得分:0)

大多数编程问题都有近乎无限的解决方案。我没有任何特别的理由选择通知,除了它们松散耦合的事实。

关于您对通知速度的评论:使应用程序变慢的因素是加载图片,因此我们正在尝试优化 。通知的速度不足以对应用程序的使用产生影响,因此,出于纯粹的性能原因而使用其他内容是没有根据的。

那就是说,它在GitHub中,所以随意发送一个不使用通知的pull请求。如果我更喜欢它,我会用它。