A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冰点 中级黑马   /  2014-11-12 21:19  /  888 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

任何继承了NSObject的对象都需要内存管理,OC不像java,当没有指针引用对象时,对象所占的内存也不会消失,需要进行手动回收(intchar之类的基本数据不需要);可以通过引用计数器进行内存管理。
  系统根据引用计数器判断对象需不需要回收
· 当计数器为0时,对象会被系统回收,系统会自动给对象发送 dealloc消息,此时对象不可用啦,是僵尸对象(p=nil);
· 引用计数器占4个字节的存储空间;
· 只要有allocnewcopyretain,就有release
· 方法的使用
o retain 使计时器+1[p retain] 会返回对象本身);
o release 使计数器-1 ;没有返回值
o retainCount 可以得到计数器的值;可以强转为int
o dealloc 销毁对象,可以重新定义对象的dealloc方法(其中[supper dealloc]放在最后)
原则:
· 只要还有人在用这个对象,这个对象就不会被回收
· 只要想使用这个对象,就让计数器+1
· 当不想使用这个对象时,就让计数器-1
注意:
1. 野指针:指向僵尸对象(内存已经被回收)的指针
2. 在OC中,给空指针发送消息不会报错
3. 错误
· EXC_BAD_ACCESS(访问了僵尸对象,是野指针错误)
· message send to deallocated instance (给已经释放的实例发送消息)

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马