我应该在将NSString加载到UILabel之前切断NSString吗?

时间:2011-06-19 15:18:45

标签: iphone nsstring uilabel

我有很多相当长的NSString,比如500 - 1000个单词。

我也有一些UILabel。 NSStrings动态加载到UILabels。

UILabel的大小固定,最多只能显示50-100个单词。

因此,80%的单词将无法在屏幕上显示。

所以,我的问题是,在将其加载到UILabels之前,我应该将NSCtrings中80%的单词切掉吗?

我的担忧是

  1. 内存使用情况。如果我切割并将每个NSString的20%加载到UILabel,这会为我节省内存吗?

  2. 加载效果。我不知道iOS是如何对80%的NSString做的。 iOS仍会绘制(但显然由于UILabel的视觉尺寸有限而没有显示)或者只是巧妙地停止绘制任何可视区域以外的东西。

  3. 感谢

4 个答案:

答案 0 :(得分:3)

我怀疑UILabel并不打算画出你看不到的弦乐。在任何情况下,它们都不会消耗大量的内存,因为它们被绘制的位图上下文仅与视图边界一样大。他们可能会耗费一些额外的千字节,但这确实不是什么大问题;记住像素是4个字节。

在测量性能问题之前,不要为复杂的优化而烦恼。

答案 1 :(得分:0)

您可以选择UILabel,使用single linemultiline使用lineBreakMode,此模式将决定UILabel的效果。

对于您的问题没有直接的答案,因为我们无法看到苹果如何实施UILabel。

如果您的要求中没有显示完整的文字,则只能传递20%的字符串,并且可以视为优化。

答案 2 :(得分:0)

“过早优化是所有邪恶的根源” -Donald Knuth

传递整个事物,然后如果它很慢,那么考虑一下。

  1. 理论上是的,因为UILabel.text存储了打印在屏幕上的文本。但是,我们不再在具有16k内存的机器上运行。见上面的引用。

  2. 我相信Quartz会做这个优化。通常,不会在UIView边界的CGRect之外进行绘制。

答案 3 :(得分:0)

显而易见的问题是,为什么要将字符串传递给UILabel而不是全部显示?无论哪种方式,它都不是非常高效的内存,因为它会将完整数据存储在内存中,但是作为tc。提到,因为你正在处理的字符串长度合理,它几乎不会引起太多的内存问题。

除非您在应用中遇到明显的内存问题,否则我建议您离开它。