我正在研究一个应用程序,其中我正在做很多addSubview和removeFromSuperview,但应用程序因内存管理不力而崩溃。我想知道addSubview是否增加一个视图的引用计数? removeFromSuperView是否将引用计数减1?removeFromSuperview和addSubview关系与引用计数?
1
A
回答
0
是的,他们这样做。一般来说,无论何时将对象添加到集合(包括对象的子视图数组)中,它都会增加其保留计数。
0
是的,如果你创建了这样一个观点:
UIView *myView = [[UIView alloc] init];
保留计数为1,你是主人。
如果添加此视图到另一个视图,第二视图将成为它的主人,并会增加数量,因此你需要释放:
[mySecondView addSubView:myView];
[myView release];
现在,如果你想删除看来,你这样做:
[myView removeFromSuperView];
而且你的看法会完全释放原因removeFromSuperView递减计数。
所以,总结:
- alloc和addSubView将由1增加计数每
- 释放和removeFromSuperview将减1的次数来对每个
0
是完全相同... addSubView会将视图的引用计数增加1,removeFromSuperView会将其减1。如果您在内存管理中遇到一些问题,请尝试追踪您的视图的引用计数,也许它不会被释放。
0
是的,你是对的addSubView增加视添加和removeFromSuperView减少一个引用计数。
0
调用addSubview
确实会增加引用计数,因此你需要调用addSubview
见Apple UIView reference document其中用于addSubview它指出“这个观点也得到了保留接收”后释放您要添加的视图。
相关问题
- 1. addSubview和removeFromSuperview时的堆增长
- 2. interfaceorientation保持相同removeFromSuperview并再次addSubview
- 3. addsubview和removeFromSuperview是显示新思维这effecient方式?
- 4. 与GGPLOT2计算相关系数R中
- 5. LINQ to SQL计数表与关系
- 6. Mongoid与设计关系
- 7. Parse.com关系计数
- 8. addSubview与NSObject?
- 9. Laravel 5 orderBy关系计数和分页
- 10. 计数两行范围和关系(Laravel)
- 11. 多态关系和计数器缓存
- 12. CQRS和事件源与关系数据库设计结合
- 13. mysql插入计数与磁盘io写入计数的关系
- 14. 解释数据库设计对我来说,和关系型与非关系型设计
- 15. Objective-C的addSubView保留计数
- 16. viewWithTag和addSubview
- 17. 核心数据与关系和属性关系
- 18. 计数关系表行
- 19. NSPredicate计数关系属性
- 20. 计算FFT相关系数
- 21. Laravel的hasMany关系计数
- 22. 关系数据库设计
- 23. Python引用计数和ctypes
- 24. CComPtr和引用计数
- 25. “removeFromSuperview”
- 26. 关于重绘“addSubview”功能
- 27. 使用PostgreSQL计算相关系数?
- 28. 关系数据库设计用MySQL,
- 29. 获得与关系的entites计数大于x与NHibernate
- 30. 与SequelizeJS和关系问题
可能的[如何发布子视图]的副本(http://stackoverflow.com/questions/9976345/how-to-release-subviews) – jrturton 2012-04-03 10:20:19