ios ExtView:巨大的内存使用

weylhg0b  于 2023-10-21  发布在  iOS
关注(0)|答案(2)|浏览(113)

我在一个extView中遇到了似乎是内存使用过多的问题。我正在将一个50Kb的asktop文本文件加载到一个NSString中,并将其分配给应用程序中一个空的asktextView组件的.text属性。这立即增加了超过100Mb的内存占用(2000倍的实际文本内容)。
有没有一种方法(属性或转换)可以使ExtraceView更有效地利用内存?我需要的内容的可编辑性和滚动,但它的纯文本(不属性),我不使用任何复杂的布局或富文本功能。
有关上下文:我在一个内存受限的环境(音频单元扩展)中工作,所以每MB内存都很重要。
这似乎与有据可查的iOS11 ExtendView内存泄漏无关,因为我没有发布该组件。

NSError* error = nil;
NSString* path = [[NSBundle mainBundle] pathForResource:@"Example" ofType:@"txt"];
NSString* content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
myUITextView.text = content; // this adds over 110Mb of memory usage for a 50Kb text file.
8fsztsew

8fsztsew1#

完全正确!

我们发现,如果你在文本视图中添加“+=”,它会使用大量的内存。
我们有一个这样的文本视图

@IBOutlet var showValues: UITextView!

它会显示一些行(比如说,10到100行左右)的文本,每行只是一个整数。
所以我每次都很简单地“追加”文本,就像这样:

latestValue: String = .. // something like "14.4 \n"
 showValues.text += latestValue

如果你只是简单地尝试一下,它会增加大约1/2 mb每行!!!!!!!!!
这可能是iOS中的一个bug。
怎么可能?这很容易测试!

vhmi4jdf

vhmi4jdf2#

你的设计真的错了。您不应该在单个NextView中拥有50 kb的文本。你应该做的是把文本分成几页。因此,您有多个页面的ViewextViews(可重用的Viewcontroller)。

**编辑:**我有另一个想法如何使用WKWebView为您的编辑器。我相信它不会滞后。但你需要在CSS/HTML的专业知识。

相关问题