我有很多相当长的NSString,比如500 - 1000个单词。
我也有一些UILabel。 NSStrings动态加载到UILabels。
UILabel的大小固定,最多只能显示50-100个单词。
因此,80%的单词将无法在屏幕上显示。
所以,我的问题是,在将其加载到UILabels之前,我应该将NSCtrings中80%的单词切掉吗?
我的担忧是
内存使用情况。如果我切割并将每个NSString的20%加载到UILabel,这会为我节省内存吗?
加载效果。我不知道iOS是如何对80%的NSString做的。 iOS仍会绘制(但显然由于UILabel的视觉尺寸有限而没有显示)或者只是巧妙地停止绘制任何可视区域以外的东西。
感谢
答案 0 :(得分:3)
我怀疑UILabel并不打算画出你看不到的弦乐。在任何情况下,它们都不会消耗大量的内存,因为它们被绘制的位图上下文仅与视图边界一样大。他们可能会耗费一些额外的千字节,但这确实不是什么大问题;记住像素是4个字节。
在测量性能问题之前,不要为复杂的优化而烦恼。
答案 1 :(得分:0)
您可以选择UILabel
,使用single line
或multiline
使用lineBreakMode,此模式将决定UILabel
的效果。
对于您的问题没有直接的答案,因为我们无法看到苹果如何实施UILabel。
如果您的要求中没有显示完整的文字,则只能传递20%的字符串,并且可以视为优化。
答案 2 :(得分:0)
传递整个事物,然后如果它很慢,那么考虑一下。
理论上是的,因为UILabel.text存储了打印在屏幕上的文本。但是,我们不再在具有16k内存的机器上运行。见上面的引用。
我相信Quartz会做这个优化。通常,不会在UIView边界的CGRect之外进行绘制。
答案 3 :(得分:0)
显而易见的问题是,为什么要将字符串传递给UILabel而不是全部显示?无论哪种方式,它都不是非常高效的内存,因为它会将完整数据存储在内存中,但是作为tc。提到,因为你正在处理的字符串长度合理,它几乎不会引起太多的内存问题。
除非您在应用中遇到明显的内存问题,否则我建议您离开它。