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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小龙女的萝卜 中级黑马   /  2015-5-23 09:12  /  1298 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Person *p = [ [Person alloc] init]


[p release];
p = nil;
每次进行完 release 操作后,都要把当前指针清空吗?每次都要写p = nil吗?

14 个回复

倒序浏览
MRC机制下 是这样的   p=nil; 是一个很好的习惯
不过现在都是用ARC 了
以后不会这样用了  
到后边你就会发现根本不需要release

评分

参与人数 1黑马币 +5 收起 理由
小龙女的萝卜 + 5 很给力!

查看全部评分

回复 使用道具 举报 1 0
这个看过,好像是有alloc就得有release
回复 使用道具 举报 1 0
这个看过,好像是有alloc就得有release
回复 使用道具 举报
本帖最后由 gclforios 于 2015-5-23 23:02 编辑

楼主你使用[p release]时 相当于对p进行内存释放,释放完后引用计数器变为0,那么系统自己会调用dealloc进行内存释放。
详情请参考我的关于手动计数引用和自动释放池总结
http://bbs.itheima.com/thread-198150-1-1.html
(出处: 黑马程序员IT技术论坛)
欢迎交流
回复 使用道具 举报
如果实例话的对象没有被引用了,也就是说对象的引用计数器变成了0的时候,那么在内存中的这块空间就不可用来了,而此时还有个指针指向这块内存,这个指针实际上也没什么意义了,就会将这个指针清空。。至少我是怎么理解的:lol
回复 使用道具 举报
alloc 是计数器加+1 release是计数器-1,不是清空
回复 使用道具 举报
对象销毁了 指针赋值为空 那是必要的
回复 使用道具 举报
hui1107464497 发表于 2015-5-24 18:01
如果实例话的对象没有被引用了,也就是说对象的引用计数器变成了0的时候,那么在内存中的这块空间就不可用 ...

补充:不清空,会变成野指针,导致下次误用这个指针,会报错
回复 使用道具 举报
hui1107464497 发表于 2015-5-24 18:01
如果实例话的对象没有被引用了,也就是说对象的引用计数器变成了0的时候,那么在内存中的这块空间就不可用 ...

补充:不清空,会变成野指针,导致下次误用这个指针,会报错
回复 使用道具 举报 1 0
不需要,系统自动release
回复 使用道具 举报
支持支持了!!!
回复 使用道具 举报
支持支持支持!!!加油学
回复 使用道具 举报
用ARC好了,省的麻烦
回复 使用道具 举报
赋值为Null 是好的习惯, 防止以后误用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马