先简单说明下整体思路:为实现在textView中插入图片,于是在textView的attributedText中加入一个附件attachment,并设置其image为所要显示的图片,最后将这个attachment插入textView的attributedString中。
具体代码:NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithAttributedString:self.textView.attributedText];NSTextAttachment *textAttachment = [[NSTextAttachment alloc] initWithData:nil ofType:nil] ;textAttachment.image = [UIImage imageNamed:@"sky.png"];
   
NSAttributedString *textAttachmentString = [NSAttributedString attributedStringWithAttachment:textAttachment] ;
   
[string insertAttributedString:textAttachmentString atIndex:index];//index为用户指定要插入图片的位置self.textView.attributedText = string;   
然后问题来了:我在textView中插入了几张图片后(每张大概几百K到1M),每次加载textView时,内存就会暴增几十M,
来回加载了几次textView后,用instrument内存监控查看如下:
只要一加载textView,就会分配出几十M的东西,
而且最蛋疼的是,当我退出并销毁textView时,这些数据却依然存在内存中,并没有自动释放!如此这般累加地分配,内存直接就泄漏了(见图)
哪位大神帮我看看这是什么原因?总结起来问题就是,如果在textView中插入附件以显示图片,那么在显示这个textView时,如果图片较多,那么耗多点内存这个无可厚非;
可为什么明明已执行了销毁操作:
self.textView = nil;
内存中的这些图片数据却仍然存在呢?而且大得惊人,动不动就几十M,重复加载几次textView,这个累计的分配量就是几百M了。或者换个角度:textView在加载其attributedText时,如果里面有附件,而且这个附件含有图片,
那么是通过什么方式加载这些图片的呢?
并且加载后为什么没有释放掉,而是一直驻留在内存中?