OC学习之内存管理初解
2013-07-28 21:52
169 查看
内存管理初解:
IOS系统为每个程序分配30MB的内存,超过20MB就会收到警告。
当你申请了一块内存的时候,一定要想在什么时候去释放它。
而且我们要注意不要去申请刚被释放的内存,否则我们将可能误用陈旧的数据。
其逻辑为 alloc +1 retain +1 release -1 release -1
对象被创建时候,引用计数的值为1 当引用计数值为0的时候,对象被系统销毁。
哪些会加1呢? alloc +1 retain +1 copy 该副本+1
copy 如果指针A和指针B不想相互牵扯,A管理A的内存,B管理B的内存。
而哪些会为0呢
release -1 autorelease -1
每当有 retain alloc copy的地方 就必须有release 来配合使用
如果属性里出现了 retain copy的时候 就要在这个类的dealloc方法理去释放这个属性
dealloc的意思就是 当该内存的计时器为0的时候 也就是retainCount为0的时候
自动调用这个方法
比如 m.a 如果m的计数器为0的时候 但是m.a还是1 这个时候 就会自动调用dealloc这个方法 先去release m.a 然后再去执行 m release
归根结底 内存管理就是 你去创建了一个内存 就要去释放它 不然就会有内存泄露 或者内存溢出等情况出现
一味的去创建 而不考虑释放的话 你的程序将会一直占着内存不放 而引起系统崩溃
IOS系统为每个程序分配30MB的内存,超过20MB就会收到警告。
当你申请了一块内存的时候,一定要想在什么时候去释放它。
而且我们要注意不要去申请刚被释放的内存,否则我们将可能误用陈旧的数据。
其逻辑为 alloc +1 retain +1 release -1 release -1
对象被创建时候,引用计数的值为1 当引用计数值为0的时候,对象被系统销毁。
哪些会加1呢? alloc +1 retain +1 copy 该副本+1
copy 如果指针A和指针B不想相互牵扯,A管理A的内存,B管理B的内存。
而哪些会为0呢
release -1 autorelease -1
每当有 retain alloc copy的地方 就必须有release 来配合使用
如果属性里出现了 retain copy的时候 就要在这个类的dealloc方法理去释放这个属性
dealloc的意思就是 当该内存的计时器为0的时候 也就是retainCount为0的时候
自动调用这个方法
比如 m.a 如果m的计数器为0的时候 但是m.a还是1 这个时候 就会自动调用dealloc这个方法 先去release m.a 然后再去执行 m release
归根结底 内存管理就是 你去创建了一个内存 就要去释放它 不然就会有内存泄露 或者内存溢出等情况出现
一味的去创建 而不考虑释放的话 你的程序将会一直占着内存不放 而引起系统崩溃
相关文章推荐
- 黑马程序员--OC学习日记-OC内存管理学习感悟
- OC学习那些事:内存管理
- OC语言学习 (七) 内存管理
- OC学习:内存管理代码规范
- 黑马程序员学习笔记_OC之内存管理3ARC
- OC学习 第七节 手动内存管理
- 黑马程序员——OC学习——内存管理
- objective-C学习笔记(五):OC之内存管理
- OC学习6——内存管理(下)
- ios开发-OC内存管理的学习
- 【OC学习-11】ARC和内存管理里面的alloc、assign、new、retain、copy、mutableCopy、release说明
- OC学习5——内存管理(上)
- OC基础语法学习5:内存管理(手动管理)
- Objective-C 学习笔记(2) -- OC的内存管理
- oc语言第七课 内存管理一——ios学习连载12
- 黑马程序员 OC------内存管理学习
- 黑马程序员--学习OC加强内存管理
- OC学习篇之---内存管理介绍和使用
- OC学习那些事:内存管理
- OC学习之Objective-C的内存管理