连续天天加班到凌晨,总算专案快出一版了
是中点,不是终点
最近试着用 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 啊
那内存占用又是为什么呢?