为什么要在addsubview:一个view对象后,release它
来源:互联网 发布:python自动化测试代码 编辑:程序博客网 时间:2024/06/04 23:23
http://blog.prosight.me/index.php/2009/10/425
先看代码:
IMGView *imgView = [[IMGView alloc] initWithFrame:CGRectMake(10, 0, 300, 300)];
[self.view addSubview:imgView];
[imgView release];
[self.view addSubview:imgView];
[imgView release];
为什么imgView要release呢?可能很多人跟我一样,之前不是很清楚。 我们逐行分析一下
第一行,alloc一次,imgView对象retainCount为1,
第二行,addSubview一次,此方法会把你传过去的对象retain一次,那么此时它的retainCount为2。self.view变为它的第二个待有者。参考:The receiver retains view. If you use removeFromSuperview to remove view from the view hierarchy, view is released.
关于上面这段话,之前只是假象addSubView回保存实例,所以需要release之前的,但是不知道为什么,看来上面的话可以确实之前的假象是基本可行的,同时也想到了一个验证 的方法,即在每次不能确定的地方后面查看该实例的retainCount,或者差文档,之前没想到查看retaincount。
第三行,调用release方法,此处释放对imgView的所有权,retainCount减1。
到语言句尾imgView的所有者只剩下self.view,并且它的retainCount仅为1。内存管理第一铁则,谁retain(alloc,copy)谁release(autorelease)。上述的做法也是为了符合这一准则。
0 0
- 为什么要在addsubview:一个view对象后,release它
- 为什么要在addsubview:一个view对象后,release它
- 为什么要在addsubview:一个view对象后,release它
- 【内存管理-问题实例】为什么执行了numberOfRowsInSection方法后,dataArray的retainCount就少了一个? 谁把它 release了?
- oc 关于对象release后 指向它的指针如何处理的问题
- 关于addsuview viewcontroller.view后 要不要release的问题
- 一个对象实例化后从spring容器取出放在bean对象中,写出获取它的属性的set方法
- 为什么要制定一个标准,它的实际意义在哪儿?
- 为什么一个view一个controller
- 新建的类对象,在重写equals方法后为什么要重写hashcode方法?
- 在ASP.NET中点击一个按钮后让它变灰的简单方法
- 在ASP.NET中点击一个按钮后让它变灰的简单方法
- iOS开发中addSubview的参数放在一个"({})"代码块中
- CString:: GetBuffer后要release
- 关于java与Android(安卓)中为什么要在new一个对象的后面加一个this的原因
- 如何在javascript中new一个对象并且赋给它属性和方法
- OOP(1) 为什么要用面向对象编程,它的优点是什么?
- iOS addsubview后不显示原因总结
- 耦合电容和去耦电容
- DELPHI 字符串与日期格式互转
- 冷酷无情的面孔,再也唤不回温暖的阳光
- POJ - 2564 Edit Step Ladders
- 大数据学习网站
- 为什么要在addsubview:一个view对象后,release它
- 读好书是如此的重要,因为好书往往带领你去到更好的书,更大的世界--书单
- hadoop集群监控工具Apache Ambari安装配置教程
- Oracle删除当前用户下所有的表的方法
- 【UvaOJ】【基础题目】【Maths - Misc】 10970 - Big Chocolate
- 使用无觅APP工场:你也可以拥有自己的APP
- Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting的区别
- FusionCharts破解方法
- QT动态翻译