UITextView在IOS中消耗大量内存

Zha*_*hen 5 iphone objective-c uitextview ios

该问题看似很简单,但很难找到解决办法。每次我在iPhone上使用UITextView时,Xcode中显示的内存使用情况都会显示异常大的利用率。例如,当我上下滚动时,包含一个简短段落(大约1KB)的UITextView会消耗大约17-18mB的内存。更不用说像100KB文件这样的大文本量,它需要半分钟才能加载到视图中。

这是我在viewDidLoad()中实现它的方式,我不认为它与代码有任何关系,因为当我从情节提要中创建一个带有默认示例文本的新UITextView时,这是完全相同的问题。

我有一个NSString读取文件内容并使UITextView显示NSString作为其文本。

@interface FileContentViewController ()
@property (weak, nonatomic) IBOutlet UILabel *fileNameTextLabel;
@property (weak, nonatomic) IBOutlet UITextView *fileContentView;
@end

@implementation FileContentViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)displayFileContentInTxtView
{
    if (!self.fileData) {
        self.fileContentView.text=@"file is empty";
        return;
    }

    unsigned char *fileContentBuffer=(unsigned char *)[self.fileData bytes];
    NSString *fileContentString=@"";
    for(int i=0;i<[self.fileData length];i++)
    {
        fileContentString=[fileContentString stringByAppendingString:[NSString stringWithFormat:@"%02x",*(fileContentBuffer+i)]];
    }
    self.fileContentView.text=fileContentString;
    self.fileData=nil;
}


- (void)viewDidLoad
{
    [super viewDidLoad];
    self.fileNameTextLabel.text=self.titleLabelText;
    [self displayFileContentInTxtView];
}
Run Code Online (Sandbox Code Playgroud)

Mor*_*ode 0

尝试只让 UITextView 显示文本而不是读取文件内容,您可以使用不多的代码来完成此操作:

YourTextViewName.text = @"[put the text to display here]";
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试摆弄 appdelegate.m 文件的 voidDidReceiveMemoryWarning 部分

或者

您可以尝试仅显示要从中提取内容的文件,并删除提取内容的代码。