在我对设备和模拟器的测试中,dequeueReusableCellWithIdentifier
:不止一次返回nil(对于有15行的表,大约返回5次)。这是正常的吗?我的印象是它第一次应该只返回 ?
答案 0 :(得分:3)
UITableView
类实现dequeueReusableCellWithIdentifier:
的行为。只要你在正确的位置(即tableView:cellForRowAtIndexPath:
内)调用它,那么你可以做的就是返回或不返回可重用的单元格。
除非我能证明特定行为导致崩溃或性能问题,否则我不会担心。
答案 1 :(得分:2)
表格视图使用飞行重量模式处理单元格。如果您熟悉这一点,您将更好地掌握正在发生的事情和原因。
答案 2 :(得分:1)
tableView和collectionView都有限制。如果您滚动得足够快,或者该单元格上有很多元素(准备时间较长),iOS可能无法像调用cellForIndexPath那样快速地准备可重用单元格。
因此,对于tableView,dequeueReusableCellWithIdentifier:
返回nil。
在CollectionView dequeueReusableCellWithReuseIdentifier:forIndexPath:
的情况下,将为您创建一个新对象。