MRC内存管理(二)数组、控件
来源:互联网 发布:java 随机生成昵称 编辑:程序博客网 时间:2024/05/17 04:13
续上一篇MRC内存管理(一)
- (void)viewDidLoad { [super viewDidLoad]; NSObject *obj = [[NSObject alloc] init]; NSLog(@"对象--%lu",(unsigned long)obj.retainCount); //当把对象放入数组中时,数组会对这个对象引用计数+1. NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:obj, nil]; NSLog(@"加入数组对象--%lu",(unsigned long)obj.retainCount); //把对象从数组中移除时,对象的引用计数-1. [array removeObject:obj]; NSLog(@"移除数组对象--%lu",(unsigned long)obj.retainCount); //当数组本身被释放前,会对自己内部所有的对象release一次。 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 200, 40)]; label.text = @"123"; NSLog(@"控件对象--%lu",(unsigned long)label.retainCount); //当把视图添加到父视图时,父视图会对这个视图retain一次。 [self.view addSubview:label]; NSLog(@"加入父视图--%lu",(unsigned long)label.retainCount); //当视图从父视图移除时,引用计数-1 //[label removeFromSuperview]; //当视图释放前,会对自身所有的子视图release一次 [label release];}- (IBAction)showAlertClick:(UIButton *)sender { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"标题" message:@"消息" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil]; NSLog(@"alert--%lu",(unsigned long)alert.retainCount); //show会导致alert的引用计数增加。 [alert show]; NSLog(@"show--%lu",(unsigned long)alert.retainCount); [alert release];}- (IBAction)presentViewController:(UIButton *)sender { SecondVC *vc = [[SecondVC alloc] init]; NSLog(@"创建VC--%lu",(unsigned long)vc.retainCount); //presentViewController模态弹出 //模态弹出会导致vc引用计数增加 [self presentViewController:vc animated:YES completion:nil]; NSLog(@"模态弹出--%lu",(unsigned long)vc.retainCount); [vc release];}输出结果如下:
至于一个模态弹出为何输出引用计数这么大,博主也甚是不解,望广大友人给予帮忙解释一下,感激不尽,谢谢!
8 0
- MRC内存管理(二)数组、控件
- OC内存管理(二)--MRC
- OC通讯录(MRC手动管理内存)
- 面试题-内存管理(MRC)
- 内存管理arc,mrc
- MRC内存管理1
- 内存管理- MRC
- 内存管理 ARC + MRC
- MRC内存管理
- 内存管理与ARC、MRC
- OC 内存管理之MRC
- Objc内存管理之MRC
- 小白的内存管理(MRC)学习记录
- 黑马程序员---OC基础---内存管理(MRC、ARC)
- OC-049.集合中的内存管理(MRC和ARC)
- MRC内存管理(一)普通的引用计数
- MRC内存管理(三)autorelease自动释放
- MRC内存管理(四)set、get方法
- APP开发实战62-Activity数据保存和恢复
- 理解OAuth 2.0
- saiku踩坑记录
- linux 常用命令总结和概括
- 简单的php留言本例子温习
- MRC内存管理(二)数组、控件
- Mac SourceTree配置Beyond Compare比较工具
- 随手写的Webview使用
- C# 反射 通过类名创建类实例
- InterlliJ /Android Studio “Cannot resolve symbol” 解决办法
- 用过滤器来解决JSP中文乱码问题
- C语言基础 printf输出反斜杠
- APP开发实战63-Activity数据传递媒介
- React组件更新混乱