iOS的ARC究竟是如何释放内存的? 10

最近在开发一个应用,无意间发现一个严重的内存泄漏问题:很简单,两个页面:主界面A管理一个tableView,点击后进入子界面B,B中是一个textView。然后我做了如下... 最近在开发一个应用,无意间发现一个严重的内存泄漏问题:

很简单,两个页面:主界面A管理一个tableView,点击后进入子界面B,B中是一个textView。然后我做了如下测试:

假设textView中有5M的文本,那么,在每次由A进入B时,内存会增加大约5M;

但是!在由B退出到A时,内存并不会减少5M。。。

而且更离谱的时,当再次由A进入到B时,内存又在原先基础上叠加了5M,退出后依然不减!


样造成的后果是,如果用户不断重复“进入->退出”“退出->进入”这个操作,那么内存占用量将以线性飞速增长,最终将导致泄漏!而且这个测
试的5M还只是个保守值,若textView还含有图片,那么每次打开就得占用十几M甚至几十M,那这样来回几个操作后,内存已经直接飙升到几百M
了。。。

我其实很想每次在B消失时手动释放各种文字和图片资源,但工程是ARC的

但关键问题是,为什么就算是ARC,会出现上述这个这么严重的问题?内存只增不减?

我无论是用模拟器还是用真机做上述测试时,应用都直接崩溃过几次(内存直接飙升到八九百M)

求大神指点其中的机理和解决办法
展开
 我来答
在我丶消失前
2015-08-06 · TA获得超过877个赞
知道小有建树答主
回答量:1118
采纳率:0%
帮助的人:801万
展开全部
额,你重复开空间了啊,开空间的时候做下判断,如果已经创建了,就不要在重复创建了
更多追问追答
追问
重复开空间?具体是指重复开辟那里的空间呢
B视图里面只有几个属性变量,而在ARC里面对属性变量的开辟和回收貌似不需要手动去管理吧?
追答
textView重复开空间了,因为tableView有重用机制,这个不用管,你只要在创建textView的时候,加一个是否为nil的判断就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
03100110
2016-02-16
知道答主
回答量:1
采纳率:0%
帮助的人:1156
展开全部
我也遇到这样的问题,想问你是怎么样解决的,控制器每次退出都会调用dealloc,但是内存就是不完全减少
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式