内存管理Memorynbsp;OC——第九天
图中那个的行为
|
OC中操作
|
OC中方法
|
根据照明设备所做的动作
|
对对象的操作
|
|
开灯
|
生成对象
|
alloc/copy/new
|
需要照明
|
持有对象
|
return
|
不需要照明
|
释放对象
|
release/autorelese(不会立即释放且与@autoreleasepool配合使用)
|
关灯
|
废弃对象
|
dealloc
|
//1.当第一人"需要照明",引用计数+1 有0-->1
//2.当第二个人"需要照明",引用计数+1 有1-->2
//3.当第二个人"需要照明",引用计数+1 有2-->3
//4.当有一个人"不需要照明",引用计数-1 有3-->2
//5.当再有一个人"不需要照明",引用计数-1 有2-->1
//dealloc 方法是对象被销毁的时候自动调用的方法,不需要手动调用,由于dealloc方法是重写的父类,所以重写此方法的时候,一定要把父类的方法内容也写上
//以后重写dealloc方法时一定调用[super dealloc]; 且此方法一定要写在最下面
//retainCount :对象的引用计数
[p release];
// NSLog(@"%lu",p.retainCount); 对象死了就不能再使用它了
//非自己创建的对象,自己也能持有
p2 = [p2 retain]; //由1--->2
NSLog(@"%lu",p2.retainCount);
//非自己创建的对象,自己也能持有
Person *p3 = [p2 retain];
NSLog(@"%lu",p3.retainCount); //2--->3
[p2 release];//3-->2
[p2 release];//2-->1
[p3 release];//1-->0
Person *p4 = [[Person alloc]init];
p4.name = @"小骨";
[p4 retain];//2
[p4 retain];//3
[p4 retain];//4
[p4 release];//3
[p4 release];//2
[p4 release];//1
// alloc 对应 dealloc
//第一种形式
Person *p6 = [[Person alloc]init];
p6.name = @"白子画";
[p6 autorelease];//或者用[p6 release];
NSLog(@"%lu",p6.retainCount);
[pool release];
//第二种形式
@autoreleasepool {
Person *p7 = [[Person alloc]init];
p7.name = @"糖宝";
[p7 autorelease];//未来的时间减1,出自动释放池减1
// [p7 release];//-1 //过度释放
NSLog(@"%lu",p7.retainCount);
//水污染谁治理,谁alloc谁release,谁return谁release,autorelease
//你想占用某个对象,就应该让对象的计数+1,(也就是让对象做以retain操作)
//向数组中添加十个人
for (int i = 0; i < 10 ; i ++) {
Person *person = [[Person alloc]init];
person.name = [NSString stringWithFormat:@"%d",i];
//数组在添加元素的时候,会对添加的元素做一次retain操作
[mArray addObject:person];
kRelease_Safe(person);
//数组在释放自己之前,会对之前添加到数组中的元素进行引用计数减1的操作
NSMutableArray *mArray2 = [NSMutableArray array];//
Person *p10 = [[Person alloc]init];
p10.name = @"朱然";
[mArray2 addObject:p10];
//使用其他方法创建的字符串都在常量区
NSString *string2 = [NSString stringWithFormat:@"1234567890"];
//返回对象的时候要做一次retain操作,外界的接受者才持有这个对象
Person *p = [[Person allocWithZone:zone]init];
p11.name = @"笙萧默";
Person *p12 = [p11 copy];
NSLog(@"%@",p12.name);
// [Person new] = [Person alloc]init];
Person *p13 = [Person new];
p13.name = @"东方";
2.引用计数 -1 (release , autorelease)
3.要想内存不出现泄漏,引用计数-1的次数相等
4.一旦引用计数为0的时候系统会自动调用dealloc 方法
内存管理Memorynbsp;OC——第九天相关推荐
- Objective--C内存管理基础
2016-08-01 15:36:30 OC中的内存管理: Objective--C增加了垃圾回收机制,作为初学者,需要清楚内存的管理,什么时候该申请内存,什么时候该释放内存,养成良好的编程习惯,开发 ...
- 内存管理Memoryamp;nbsp;OC——第九天
1. 内存管理方式 垃圾回收机制:(Garbage Collection),有系统管理内存,开发人员需要管理 注:OC从2.0之后就开始支持垃圾回收机制,但是只适用于 ...
- Object-c学习之路二(oc内存管理黄金法则1)
今天看了看oc的内存管理,自己管理内存不能随便的release和retain 法则会出现野指针等错误.下面以人和读书的例子做练习. 1.主函数 // // main.m // MemoryManage ...
- 关于OC的内存管理-01
1.什么是内存管理? 大家都知道手机的内存是有限的,app应用的内存也应该是受限制的,随着app应用的使用会导致内存的占用率增大.当内存占用率达到一种程度时.系统会发出内存警告.这时我们须要把一些不用 ...
- OC 知识:彻底理解 iOS 内存管理(MRC、ARC)
1. 什么是内存管理 程序在运行的过程中通常通过以下行为,来增加程序的的内存占用 创建一个OC对象 定义一个变量 调用一个函数或者方法 而一个移动设备的内存是有限的,每个软件所能占用的内存也是有限的 ...
- Objective-C基础笔记(3)OC的内存管理
Objective-C的内存基本管理 在OC中每一个变量都保存着引用计数器,当这个对象的引用计数器为0的时候该对象会被回收.当使用alloc.new或者copy创建一个对象的时候,对象的引用计数器被置 ...
- 十二:内存简单介绍和OC的内存管理
一.内存简单介绍 内存结构 1.运行时分配 (1)栈:用户存放程序临时创建的局部变量(先进后出). (2)堆:动态分配内存段. 2.编译器分配 (1)BSS段:存放未初始化的全局变量和静态变量. (2 ...
- OC基础15:内存管理和自动引用计数
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.什么是ARC? (1).ARC全名为A ...
- OC内存管理常见面试题整理
1:简述OC中内存管理机制.与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为什么?readwrite,rea ...
最新文章
- java中的alert是什么意思_javascript 中如何使用alert?
- Java链表—— LinkedList
- C#中读取带有Xmlns命名空间的XML文件
- threejs对象拾取
- 服务器能进系统滴滴响,ibm x226服务器开机嘀嘀嘀响三遍就没反应了。是怎么回事?内存吗?...
- 不要拿ERP的报表忽悠领导!——一个报表引发的企业经营反思
- BUPT 2012复试机考 2T
- 14年,50%市场份额,一家中国公司何以在丹麦成功?
- Flex 国际化使用
- OpenCV Python 直方图
- Web安全 Msfconsole攻击技术(成功拿下服务器最高权限.)
- Abaqus槽钢杆受力有限元分析
- 2019大前端浪潮下的年度终结
- Swift 声明(Declarations)
- 我的挣扎 与 TBtools 的开发
- 计算机逻辑函数,计算机智能化简多变量逻辑函数的算法分析
- iOS app url scheme跳转到淘宝商品详情页 唤醒app
- Shapefile格式数据去除投影坐标系
- 基于MATLAB的Cplex、Yalmip环境安装
- MVG(second)读书笔记-3D摄影几何和变换
热门文章
- Python用最简单的代码画出一箭穿心
- Android调取拍照和获取拍照后的照片
- 04oracle单表查询、连接查询、子查询
- error C2533: “XXX::{ctor}”: 构造函数不能有返回类型
- 初识 Mac机子 关机命令
- ceph存储 Ceph管理平台Calamari的架构与功能分析
- K8S环境快速部署Kafka(K8S外部可访问)
- 几分之几在手机计算机上是哪个符号,数学各
种符号怎么表达比如根号,几分之几 – 手机爱问...
- 2019牛客暑期多校9H:Cutting Bamboos【主席树+二分】
- css view a if属性,uni-app学习笔记(2)view属性控制css样式