使自定义UITableViewCells出队的更安全的选择
使用最新的API(在iOS 6中引入)使出站和自定义基本UITableViewCell
,您将执行以下操作:
这样做的主要原因是register
与dequeueReusableCell
方法之间的完全独立性: dequeueReusableCell
不知道您之前是否注册了一个单元,并且无法推断其类型。 因此,它需要从UITableViewCell
强制转换为自定义子类。
解决此问题的常用方法是:
还记得我们在iOS 6之前对单元出队的方式吗? 使用旧的dequeueReusableCell
方法,并在该方法失败的情况下创建一个新的单元格。 我们没有在任何地方注册单元格类型。
使用此方法具有重要的优点:
- 使单元出队的所有必要代码都在同一位置:这正在改善您的本地推理。
- 您不需要使用任何解决方法:编译器不会引发任何错误,代码也不会崩溃,并且它不会无声地失败(当然,从技术上讲,它可以,但是前提是您分配了不同的单元格标识符。)继续阅读)。
- 由于所有代码都在一起,因此您可以将单元标识符设置为常数并重新使用它,从而避免了我们之前确定的可能的故障点之一。
- 由于现在开发人员是负责初始化单元的人(不再自动完成),因此编译器确保强制类型转换和新创建的单元属于同一类型。 这样可以避免我们谈论的另一个故障点:不可能有不同的类型(编译器会引发错误)。