检查GitHub项目中的这个文章。自定义单元格( prepareForReuse类)的tableViewCellIsPreparingForReuse方法向表(RootViewController类)发送通知,该表由tableViewCellIsPreparingForReuse方法观察。该方法重置单元的关联键和图像视图。
那么,为什么作者宁愿通过通知发送它,而不是在从表的dequeueReusableCellWithIdentifier方法获得非零单元之后重新设置它们呢?
根据UITableViewCell文档,prepareForReuse是在dequeueReusableCellWithIdentifier之前调用的。
如果UITableViewCell对象是可重用的--也就是说,它有一个重用标识符--则在从UITableView方法dequeueReusableCellWithIdentifier:返回对象之前调用该方法。
我已经测试过,当dequeueReusableCellWithIdentifier返回一个非nill值时,它与对prepareForReuse的调用耦合在一起。
作者在JKCallbacksTableViewCell.h中评论了应用程序逻辑分离,但我认为这是一种过火;使用异步分派优化性能,但是发送那些缓慢的通知来重置某些属性……还是我漏掉了什么关于GCD的事?
发布于 2012-09-12 19:21:03
大多数编程问题都有几乎无穷多的解决方案.除了通知是松散耦合的这一事实之外,我没有任何特殊的理由选择通知。
关于你对通知速度的评论:让应用程序慢下来的是加载图像,所以我们试图优化它。通知的速度不足以改变应用程序的使用,因此,出于纯粹的性能原因而使用其他东西在这里是没有道理的。
也就是说,它是在GitHub中的,所以可以随意发送不使用通知的拉请求。如果我更喜欢它,我就用它。
https://stackoverflow.com/questions/12391263
复制相似问题