楼主:
HuangJC (吹笛牧童)
2014-04-12 06:05:48连续天天加班到凌晨,总算专案快出一版了
是中点,不是终点
最近试着用 instrument 去抓 memory leak,却发现内存吃得离谱
不得已又写了个小程式,离开公司架构,小小的测试一下
写得很简单,就两个画面切来切去
1.开一个新程式
2.在 storyboard 上,摆一个 button
3.开一个新的 xib & UIViewController
4.新 xib 上也摆一个 button
5.coding
第一个 button,很简单的加载 xib 档,开始 MyViewController 而已
MyViewController* controller = [[MyViewController alloc]
initWithNibName:@"MyViewController" bundle:nil];
[self presentViewController:controller animated:true completion:nil];
第二个 button,很简单的关闭 MyViewController, 回到原来的 controller
[self dismissViewControllerAnimated:true completion:nil];
程式够简单了,抄书的
然后在两个档 ( storyboard & xib ) 上,摆一大堆 button
这么做只是为了增加内存消耗,使结果明显
执行,快速的按 button1 , button2, 让画面切来切去
就这样竟然也有 memory leak
(不要只用 Xcode 的环境看,要打开 instrument 看,才明显)
程式显示,
[self presentViewController:controller animated:true completion:nil];
光这行都会吃内存
我可以理解的是,当我把 controller 传入 present view 函式,它就被保留了
难道我必需自己把它移出删除吗?
这样太不合理了!!
写一个 -(void)delloc 来验证,也会发觉在按下 close button 时有 delloc 啊
那内存占用又是为什么呢?
楼主:
HuangJC (吹笛牧童)
2014-04-12 06:06:00又天亮了,唉
作者:
darktt (小朱)
2014-04-12 07:31:00有dealloc不代表物件有正确的Release
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2014-04-12 09:34:00要嘛去聘一个会的人不然就用别的吧, 都给你们猜就饱了啊
作者:
yuanruo (罪を憎んで人を憎まず)
2014-04-12 11:36:00我在上面各摆了两百多个button 怎没leak ?
在dealloc里用 CFGetRetainCount() 抓一下每个object的reference count, ARC也不是万能,有些情况要人脑分析.
作者:
chchwy (mat)
2014-04-13 20:10:00ARC是即时释放没错 没释放就是有地方没写好
楼主:
HuangJC (吹笛牧童)
2014-04-14 02:23:00真的很感谢你们;虽然不知多久后又要害你们失望可是陌生人能如此给机会谅解对方,你们都很了不起..
作者:
Teferi (太费力)
2014-04-15 12:35:00印象中上课的老师有提过,iOS就是内存满了才清除,机制也很像你所描述的方式原本的内存管理 release本来也是操作retain而已呀
楼主:
HuangJC (吹笛牧童)
2014-04-15 16:26:00作者:
darktt (小朱)
2014-04-15 20:51:00你需要开放权限出来,我用我的mail请求权限了,开头是pippi的就是我的mail
楼主:
HuangJC (吹笛牧童)
2014-04-15 21:40:00有看到;不懂的是我以为我给的网址就是公开权限了那程式不就也无法下载?
作者:
atst2 (atst2)
2014-04-15 23:09:001. 根本没有leak2. allocation表示的是现在在用的Memory,只要程式在跑就会有内存使用.3. Leak是看下面的leak字段有没有出现红线.
Please implement unwinding storyboard segue