OC基础使用(三 内存管理)
2015-04-10 13:57
176 查看
内存管理
一、内存
4个部分:
常量区 (如:10,"abc") 效率最高
全局静态区 (如:定义的全局变量,静态变量)
栈区 (如:成员变量、参数)
堆区 (如:所有创建的OC对象)
堆、栈的区别?
栈区 空间小(5-10M)、先进后出
堆区 空间大(?G)、 无序的
管理方式:
1.基于垃圾回收的(系统完成)
2.基于引用计数的(手动完成)
OC的内存管理:
NSObject *obj1 = [[NSObject alloc] init];
NSObject *obj2 = obj1;
使用:obj1,obj2
[obj1 release];
[obj2 release];
前提:只有OC的对象才需要内存管理
定义:如果你使用alloc、copy、retain等关键字来得到对象的所有权,你就有义务
有责任,使用release、autorelease来释放该对象的所有权。
公式:alloc+retain+copy = release+autorelease;
原理:基于引用计数(retainCount)
一个对象被多少个对象引用,该对象的引用计数就应该是多少
属性的特性:与内存管理相关的
assgin 用于C语言的数据类型
copy 用于OC字符串
retain 用于OC对象
浅拷贝与深拷贝
浅拷贝:复制引用对象的指针(如:assgin、retain)
深拷贝:复制引用对象本身(如:copy)
注意:
1.iOS的内存管理是基于引用计数的,它不支持垃圾回收机制。
二、
NSObject *obj = [[NSObject alloc] init];
int num = 10;
指针(*):存储对象在内存中的首地址
三、OC的内存管理
前提:OC的对象才需要进行内存管理
引用计数(retainCount):对象被引用的个数
alloc:分配堆的内存、设置对象的引用计数为1
retain:+1
release:-1
dealloc:对象引用计数为0时
内存管理:
在代码块中:alloc + retain = release
注意:
1.OC的内存管理只用于管理堆区的内存
2.OC的内存管理是基于对象的引用计数的
错误:EXC_BAD_ACCESS
原因:执行的错误的内存地址,一个对象已经被销毁,不能在使用
解决:自己找
一、内存
4个部分:
常量区 (如:10,"abc") 效率最高
全局静态区 (如:定义的全局变量,静态变量)
栈区 (如:成员变量、参数)
堆区 (如:所有创建的OC对象)
堆、栈的区别?
栈区 空间小(5-10M)、先进后出
堆区 空间大(?G)、 无序的
管理方式:
1.基于垃圾回收的(系统完成)
2.基于引用计数的(手动完成)
OC的内存管理:
NSObject *obj1 = [[NSObject alloc] init];
NSObject *obj2 = obj1;
使用:obj1,obj2
[obj1 release];
[obj2 release];
前提:只有OC的对象才需要内存管理
定义:如果你使用alloc、copy、retain等关键字来得到对象的所有权,你就有义务
有责任,使用release、autorelease来释放该对象的所有权。
公式:alloc+retain+copy = release+autorelease;
原理:基于引用计数(retainCount)
一个对象被多少个对象引用,该对象的引用计数就应该是多少
属性的特性:与内存管理相关的
assgin 用于C语言的数据类型
copy 用于OC字符串
retain 用于OC对象
浅拷贝与深拷贝
浅拷贝:复制引用对象的指针(如:assgin、retain)
深拷贝:复制引用对象本身(如:copy)
注意:
1.iOS的内存管理是基于引用计数的,它不支持垃圾回收机制。
二、
NSObject *obj = [[NSObject alloc] init];
int num = 10;
指针(*):存储对象在内存中的首地址
三、OC的内存管理
前提:OC的对象才需要进行内存管理
引用计数(retainCount):对象被引用的个数
alloc:分配堆的内存、设置对象的引用计数为1
retain:+1
release:-1
dealloc:对象引用计数为0时
内存管理:
在代码块中:alloc + retain = release
注意:
1.OC的内存管理只用于管理堆区的内存
2.OC的内存管理是基于对象的引用计数的
错误:EXC_BAD_ACCESS
原因:执行的错误的内存地址,一个对象已经被销毁,不能在使用
解决:自己找
相关文章推荐
- iOS编程基础-OC(十五)-块的内存管理和使用
- 黑马程序员 _8 OC基础 id description sel的使用
- 黑马程序员——IOS基础——OC内存管理循环retain和autorelease
- OC基础-内存管理-引用计数器+set方法
- OC基础-内存管理-block类型
- OC基础-内存管理-ARC+weak
- 黑马程序员_OC基础06_内存管理小结
- Objective-C基础笔记(3)OC的内存管理
- oc 基础入门之手动内存管理代码规范
- iOS开发OC基础:OC的内存管理
- 黑马程序员——OC基础—内存管理
- 黑马程序员_OC基础11_内存管理01
- OC基础—内存管理之@property及其参数(补充新知识:循环引用和@class)
- OC基础—内存管理之set方法内存管理
- oc基础入门之block的使用
- 黑马程序员——IOS基础——OC内存管理-set方法内存管理及微博模型设计
- OC基础—内存管理之多对象内存管理
- iOS开发OC基础:OC字符串对象NSString对象方法使用基础
- OC基础-内存管理-循环retain+autorelease
- Objective-C基础笔记(3)OC的内存管理