gpt4 book ai didi

ios - UITableView 滚动性能

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:23:26 33 4
gpt4 key购买 nike

我正在尽最大努力使用 Instruments 分析我的应用程序并找出我的代码昂贵的地方。 [self checkVisibleCells]方法在scrollViewDidScroll:(UIScrollView *)scrollView中调用。我在屏幕上看到大约两个/三个单元格,具体取决于它们的高度。然后我确定该单元格是否完全可见并将其标记为已读。使用此线程中的答案:Best way to check if UITableViewCell is completely visible

到目前为止,我只能看到 self.tableView.visibleCells 花费了很长时间。获取 visibleCells 真的那么昂贵吗?有没有更好的方法可以做到这一点?

全尺寸截图在这里:https://www.dropbox.com/s/wt8e2uat9t81qt3/Screenshot%202014-05-06%2009.26.25.png

Time profiller

最佳答案

在这种情况下,我能给你的最好的建议是在你调用 tableView 上的 - (NSArray *)visibleCells 时保持理智。

scrollViewDidScroll 被调用了很多次。如果您随后每次都在 tableView 上调用 .visibleCells,那么它会对您的性能产​​生如此大的影响也就不足为奇了。

我的建议是,考虑到您显然知道表格 View 单元格的高度(在代码中或在 IB 中声明),我会利用它来发挥您的优势。请注意,如果您的单元格高度不同,这将不会真正起作用。

首先,在您的 checkVisibleCells 方法中,我将添加:

- (void)checkVisibleCells
{
CGFloat newContentOffsetY = self.tableView.contentOffset.y;
BOOL tableViewHasScrollFarEnough = newContentOffsetY > lastCheckedContentOffsetY + MysteriousViewControllerTableViewCellHeight;
tableViewHasScrollFarEnough = tableViewHasScrollFarEnough || self.tableView.contentOffset.y < self.lastCheckedContentOffsetY - MysteriousViewControllerTableViewCellHeight;

if (tableViewHasScrollFarEnough)
{
return;
}

self.lastCheckedContentOffsetY = self.tableView.contentOffset.y;

// ... the rest of the method
}

关于ios - UITableView 滚动性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23488809/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com