过去几天我一直在试图解决一个谜团,即为什么我的批处理大小为 20 的 NSFetchedResultsController 总是在获取完成后立即错误(即加载到内存中)我的所有对象,从而导致请求需要约 20 秒。
事实证明,这是因为在我的 heightForRowAtIndexPath 中,高度基于每个获取的对象的 NSString 属性的长度,因此在重新加载表时,如果表有 2000 行,则为中的每一行计算高度由于我访问该对象的文本属性,因此一开始就会在 2000 个对象(20 个大小的批次)中出现错误,导致它永远花费时间。 (我不知道一开始就计算了行高)。
所以问题是,如果我有一个批处理大小为 20 的获取结果控制器,但我的行高基于对象的文本属性,如果我尝试访问,将导致该对象不再是错误,但是实际上加载到内存中,计算高度的解决方法是什么?
我有什么选择?
有趣的问题。为了提高性能,我要做的就是在模型中创建一个属性来存储该字符串文本的长度。通过这种方式,您不需要即时计算每行的长度,但您可以预先计算出高度。
也许还有其他有价值的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)