通过使用另一个支持层减少 UILabel 的内存
Posted
技术标签:
【中文标题】通过使用另一个支持层减少 UILabel 的内存【英文标题】:Reduce memory for UILabel through using another backing layer 【发布时间】:2015-08-18 14:14:22 【问题描述】:我正在使用一个大尺寸的标签,它占用了太多的内存。该问题在UILabel (CALayer) is using large amounts of virtual memory 和How to suck down ios memory without even trying 中进行了描述。
是否可以通过例如交换UILabel
的支持层? CATiledLayer
?
我要做的是减少UILabel
的已用内存。例如,使用清晰的背景颜色并没有帮助。不知道这到底是什么意思:
但是你没有响应 drawRect 方法来绘制你的视图的内容
【问题讨论】:
您正在为哪些设备编程? iOS 设备,例如 iPhone、iPad、iPod touch。 你想要完成什么,为什么这对你来说是个问题? IOS 设备很明显,IOS、iphone 4 有哪些特定设备? iphone 5,iphone 6,Ipad 2,哪一个? 我有内存问题。见here。所有支持 iOS 7 及更高版本的设备。这意味着 iPhone 4、iPad 2 以及随后的所有世代。 【参考方案1】:您不能用CATiledLayer
支持UILabel
,但也没有理由这样做。如果您要切换到CATiledLayer
(这可能是正确的解决方案),那么无论如何您都必须管理自己的布局。一旦你这样做了,UILabel
就不会给你买太多东西。只需使用UIView
并按照您的建议平铺即可。
也就是说,您链接的问题讨论了创建 500 UILabels
。这是一个疯狂的标签数量。您应该使用其他工具,例如 CATiledLayer
、infinite UIScrollView
、UITableView
等,以便您管理较少数量的可重用视图。
【讨论】:
"并且不要使用 xamarin" ;-) 实际上“不使用 xamarin”的另一个原则原因是 Rob 无法回答有关它的问题 :-) 嗯,这应该是不言而喻的。我没有在链接的问题中注意到这一点。是的,Xamarin 将使一切变得更加困难,尤其是当性能受到任何关注时。在金属附近完成高性能移动设备已经够难的了;通过一个 Apple 无法帮助您的抽象层来实现它是一个艰难的选择。 robnapier.net/product-or-process 这只是一个大标签,但这足以在一段时间后杀死应用程序。所以我必须使用另一种机制。感谢您的澄清。以上是关于通过使用另一个支持层减少 UILabel 的内存的主要内容,如果未能解决你的问题,请参考以下文章
iOS - UILabel(CALayer) - VMalloc 内存不断增加