繁体   English   中英

UITableView的可重用池如何查看内容

[英]How to view the content UITableView's reusable pool

我试图深入研究UITableView内部是如何工作的。 我已经阅读了多篇关于这样的帖子,

https://www.mikeash.com/pyblog/friday-qa-2013-02-22-lets-build-uitableview.html

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

我已经知道我们将有cells按照屏幕尺寸cell高度 但我试图弄清楚如果tableView在不同的indexPaths接受不同类型的cells会发生什么。

好吧,您可以深入研究调试中的对象...

我在didSelectRowAt设置了一个断点并查看了 Variables View 窗格:

在此处输入图片说明

我有一个行(索引路径[0,3]所使用TestCellB并且所使用90行TestCell ,并且该表被滚动到行21(这样的行[0,3]殷实屏幕。

如您所见,有一个名为_reusableTableCells的内部Dictionary ,在我的示例中,它当前包含1 个TestCellB2 个TestCell


编辑

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

    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>>"
    );
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM