Ios 如何查看内容UITableView';s可重用池

Ios 如何查看内容UITableView';s可重用池,ios,swift,uitableview,Ios,Swift,Uitableview,我试图深入研究UITableView的内部工作原理。我已经读过多篇关于这方面的帖子 我想知道是否有任何方法可以查看可重用池的内容,即,其中有多少种类型以及所有的UITableViewCell类型 我已经知道,我们将根据屏幕大小和单元格高度设置单元格。但是我正在试图弄清楚如果表视图在不同的索引路径上接受不同类型的单元格,会发生什么情况 我在didSelectRowAt中设置了一个断点,并查看变量视图窗格: 我有一行(索引路径[0,3]使用了TestCellB,有90行使用了TestCell,表

我试图深入研究
UITableView
的内部工作原理。我已经读过多篇关于这方面的帖子

我想知道是否有任何方法可以查看可重用池的内容,即,其中有多少种类型以及所有的
UITableViewCell
类型

我已经知道,我们将根据屏幕大小和
单元格高度设置
单元格。但是我正在试图弄清楚如果
表视图
在不同的
索引路径上接受不同类型的
单元格
,会发生什么情况

我在
didSelectRowAt
中设置了一个断点,并查看变量视图窗格:

我有一行(索引路径
[0,3]
使用了
TestCellB
,有90行使用了
TestCell
,表格被滚动到第21行(因此第
[0,3]
行远离屏幕)

如您所见,有一个名为
\u reusableTableCells
的内部
字典,在我的示例中,它当前包含1
TestCellB
2
TestCell
s


编辑

我只是试了一下-可能会给你一些额外的信息:

    var reusableCells = tableView.value(forKey: "_reusableTableCells")
    print(reusableCells)
输出:

Optional({
    TestCellB =     (
        "<TranslateTest.TestCellB: 0x7f87b206aa00; baseClass = UITableViewCell; frame = (0 1612; 414 37); clipsToBounds = YES; hidden = YES; autoresize = W; layer = <CALayer: 0x600003a66380>>"
    );
    TestCellC =     (
        "<TranslateTest.TestCellC: 0x7f87b2894800; baseClass = UITableViewCell; frame = (0 205; 414 93); clipsToBounds = YES; hidden = YES; autoresize = W; layer = <CALayer: 0x600003a586e0>>",
        "<TranslateTest.TestCellC: 0x7f87b3000e00; baseClass = UITableViewCell; frame = (0 298; 414 93); clipsToBounds = YES; hidden = YES; autoresize = W; layer = <CALayer: 0x600003a5fe40>>"
    );
})
可选({
TestCellB=(
""
);
TestCellC=(
"",
""
);
})

单元格不太可能被破坏,而且它们很可能是按需创建的,因此,如果您在创建它们的过程中保留对它们的弱引用,并知道它们在任何时候都在使用中,您就可以了解所有单元格的全貌。我想我理解您的问题:如果我在
[0,0]处有
CellTypeA
然后是50行
CellTypeB
,我向下滚动到第40行……是否有
CellTypeA
“位于重用池中”?然而……你为什么想知道呢?@DonMag就像我在问题中指定的那样,我只是想更好地了解tableView的实际工作原理。
\u reuableTableCells
是那些当前在屏幕上不可见的单元格,对吗?@PGDev-是的,这就是快速测试所表明的。@PGDev-看看我的编辑(比进入调试检查更容易).但有一个问题。如果有大约100个TestCell类型的单元格。我向下滚动到第99个单元格。现在屏幕上有8个单元格。在可重用单元格中,还有8-9个可用单元格。那么,池的可能大小是多少?为什么池中还有8-9个可用单元格?是否应该有1/2的可用单元格ff屏幕?我想象内部正在进行一些优化算法。经过更快速的测试,我看到
\u reusableTableCells
的数量随着我上下滚动而变化,在某些点上会下降到零。