使自定义UITableViewCells出队的更安全的选择

使用最新的API(在iOS 6中引入)使出站和自定义基本UITableViewCell ,您将执行以下操作:

这样做的主要原因是registerdequeueReusableCell方法之间的完全独立性: dequeueReusableCell不知道您之前是否注册了一个单元,并且无法推断其类型。 因此,它需要从UITableViewCell强制转换为自定义子类。

解决此问题的常用方法是:

还记得我们在iOS 6之前对单元出队的方式吗? 使用旧的dequeueReusableCell方法,并在该方法失败的情况下创建一个新的单元格。 我们没有在任何地方注册单元格类型。

使用此方法具有重要的优点:

  • 使单元出队的所有必要代码都在同一位置:这正在改善您的本地推理。
  • 您不需要使用任何解决方法:编译器不会引发任何错误,代码也不会崩溃,并且它不会无声地失败(当然,从技术上讲,它可以,但是前提是您分配了不同的单元格标识符。)继续阅读)。
  • 由于所有代码都在一起,因此您可以将单元标识符设置为常数并重新使用它,从而避免了我们之前确定的可能的故障点之一。
  • 由于现在开发人员是负责初始化单元的人(不再自动完成),因此编译器确保强制类型转换和新创建的单元属于同一类型。 这样可以避免我们谈论的另一个故障点:不可能有不同的类型(编译器会引发错误)。