addSubView会使内存计数+1
2015-11-24 16:41
471 查看
- (void)viewDidLoad { [super viewDidLoad]; [self setNavTitle:@"安全中心"]; UIImageView *bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 49, 320, 413+(iPhone5?88:0))]; [bgImageView setImage:[UIImage imageNamed:iPhone5?@"single_bg_i5.png":@"single_bg.png"]]; [self.view addSubview:bgImageView]; [bgImageView release]; ...... }之前比较疑惑下面这段代码,不知道为什么bgImageView这个变量release之后为甚么还可以使用。现在发现我把c++的思想错误的带入了进来。
添加几段内存引用计数代码:
- (void)viewDidLoad { [super viewDidLoad]; [self setNavTitle:@"安全中心"]; UIImageView *bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 49, 320, 413+(iPhone5?88:0))]; [bgImageView setImage:[UIImage imageNamed:iPhone5?@"single_bg_i5.png":@"single_bg.png"]]; NSLog(@"内存计数:%ld", [bgImageView retainCount]); [self.view addSubview:bgImageView]; NSLog(@"内存计数:%ld", [bgImageView retainCount]); [bgImageView release]; NSLog(@"内存计数:%ld", [bgImageView retainCount]); ...... }在输出窗得到以下结果:
2015-11-02 14:35:36.260 ClientV2[16904:178273] 内存计数:1 2015-11-02 14:35:37.779 ClientV2[16904:178273] 内存计数:2 2015-11-02 14:35:37.779 ClientV2[16904:178273] 内存计数:1
我们发现变量release之后的内存计数并不是0,而是1!
这是因为addSubView函数将bgImageView变量的内存引用计数加了1。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- IE7降低内存和降低CPU的几个技巧
- 如何高效的使用内存
- DOS下内存的配置
- XP/win2003下发现1G的内存比512M还慢的解决方法
- PowerShell实现动态获取当前脚本运行时消耗的内存
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- SQL语句实现查询SQL Server内存使用状况
- C语言内存对齐实例详解
- 深入学习C语言中memset()函数的用法
- 全局变量与局部变量在内存中的区别详细解析
- VB读取线程、句柄及写入内存的API代码实例
- php运行提示:Fatal error Allowed memory size内存不足的解决方法
- IE浏览器IFrame对象内存不释放问题解决方法