黑马程序员——oc的内存管理
来源:互联网 发布:七天网络登录 编辑:程序博客网 时间:2024/06/06 05:18
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
oc中的内存管理
一.为什么进行内存管理
由于系统有限,所以每个程序所占的内存也是有限制的,当程序所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等。
本质原因是因为对象和其他数据类型在系统中的存储空间不一样,其它局部变量主要存放于栈中,而对象存储于堆中,当代码块结束时这个代码块中涉及的所有局部变量会被回收,指向对象的指针也被回收,此时对象已经没有指针指向,但依然存在于内存中,造成内存泄露。
二.怎样管理内存机制
1.内存管理机制
ObjC中提供了一个“引用计数”(retain counting)机制
(1)每一个对象都有一个引用计数(retain count)
(2)对象被创建的时候,引用计数的值是1
(3)当引用计数值是0的时候,对象将被系统统一销毁
(4)可以通过调用一些方法来操作引用计数的值
获得所有权的方法:
(1)alloc:为一个新对象分配内存,并且它的引用计数为1。调用alloc方法,你便有对新对象的所有权
(2)copy:制造一个对象的副本,该副本的 引用计数为1,调用者具有对副本的所有权
(3)retain:使对象的引用计数加1,并且获得对象的所有权
放弃所有权的方法:
(1)release:使对象的引用计数减1,并且放弃对象的所有权
(2) autorelease:使对象的引用计数在未来的某个时候减1,并且在那个时候放弃对象的所有权
2.对象的销毁当一个对象的引用计数器(retain count)为0时,那么它将被销毁,其占用的内存被系统回收。当对象被销毁时,系统会自动向对象发送一条dealloc消息,一般会重写dealloc方法,在这里释放相关的资源。一旦重写了dealloc方法就必须调用[super dealloc],并且放在代码块的最后调用(不能直接调用dealloc方法)。一旦对象被回收了,那么他所占据的存储空间就不再可用,坚持使用会导致程序崩溃(野指针错误)。
0 0
- 黑马程序员——OC---内存管理
- 黑马程序员——OC内存管理
- 黑马程序员——OC内存管理
- 黑马程序员——【OC】内存管理
- 黑马程序员——OC内存管理
- 黑马程序员——OC内存管理
- 黑马程序员——OC内存管理
- 黑马程序员——OC内存管理
- 黑马程序员——[OC]内存管理
- 黑马程序员 — OC(内存管理)
- 黑马程序员—OC内存管理
- 黑马程序员———OC的内存管理
- 黑马程序员——oc的内存管理
- 黑马程序员——OC的内存管理
- 黑马程序员-OC的内存管理笔记
- 黑马程序员——OC——内存管理
- 黑马程序员——OC——ARC内存管理
- 黑马程序员——OC——ARC内存管理
- 编写websocket时需要导入包
- JSON: The Fat-Free Alternative to XML
- 其原因可能是堆被损坏 这说明exe中或它所加载的任何 DLL 中有 Bug
- jquery插件封装
- 算法基础:正整数指定规则排序问题(Golang实现)
- 黑马程序员——oc的内存管理
- mysql日志设置
- 学堂在线c++进阶 编程题10-3
- 各种编码的由来及编码见转换
- 完整类库列表struts2.0
- POJ 3673:Cow Multiplication
- 在应用里面获取系统字体大小
- Hibernate核心接口简介
- ini_set的用法介绍