黑马程序员技术交流社区

标题: 计数器的基本操作 [打印本页]

作者: 小龙女的萝卜    时间: 2015-5-23 09:12
标题: 计数器的基本操作
Person *p = [ [Person alloc] init]


[p release];
p = nil;
每次进行完 release 操作后,都要把当前指针清空吗?每次都要写p = nil吗?
作者: Theshy    时间: 2015-5-23 21:24
MRC机制下 是这样的   p=nil; 是一个很好的习惯
不过现在都是用ARC 了
以后不会这样用了  
到后边你就会发现根本不需要release
作者: 天是蓝色的    时间: 2015-5-23 22:38
这个看过,好像是有alloc就得有release
作者: 天是蓝色的    时间: 2015-5-23 22:39
这个看过,好像是有alloc就得有release
作者: gclforios    时间: 2015-5-23 22:59
本帖最后由 gclforios 于 2015-5-23 23:02 编辑

楼主你使用[p release]时 相当于对p进行内存释放,释放完后引用计数器变为0,那么系统自己会调用dealloc进行内存释放。
详情请参考我的关于手动计数引用和自动释放池总结
http://bbs.itheima.com/thread-198150-1-1.html
(出处: 黑马程序员IT技术论坛)
欢迎交流

作者: hui1107464497    时间: 2015-5-24 18:01
如果实例话的对象没有被引用了,也就是说对象的引用计数器变成了0的时候,那么在内存中的这块空间就不可用来了,而此时还有个指针指向这块内存,这个指针实际上也没什么意义了,就会将这个指针清空。。至少我是怎么理解的:lol
作者: XiaoBaoMi    时间: 2015-5-24 18:08
alloc 是计数器加+1 release是计数器-1,不是清空
作者: jingkai    时间: 2015-5-24 21:25
对象销毁了 指针赋值为空 那是必要的
作者: yuang4074    时间: 2015-5-25 20:31
hui1107464497 发表于 2015-5-24 18:01
如果实例话的对象没有被引用了,也就是说对象的引用计数器变成了0的时候,那么在内存中的这块空间就不可用 ...

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

补充:不清空,会变成野指针,导致下次误用这个指针,会报错
作者: lyricdon    时间: 2015-5-25 23:11
不需要,系统自动release
作者: lyricdon    时间: 2015-5-25 23:43
支持支持了!!!
作者: lyricdon    时间: 2015-5-26 00:07
支持支持支持!!!加油学
作者: wangguanyang    时间: 2015-5-26 07:24
用ARC好了,省的麻烦
作者: wwwwjay    时间: 2015-5-26 15:16
赋值为Null 是好的习惯, 防止以后误用




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2