黑马程序员技术交流社区
标题:
关于release操作的问题
[打印本页]
作者:
Freedam
时间:
2014-6-7 11:04
标题:
关于release操作的问题
本帖最后由 Freedam 于 2014-6-8 10:47 编辑
直接上代码:
Car.h
#import <Foundation/Foundation.h>
@interface Car : NSObject
@end
复制代码
Car.m
#import "Car.h"
@implementation Car
@end
复制代码
main.m
#import <Foundation/Foundation.h>
#import "Car.h"
int main(int argc, const char * argv[])
{
Car *c = [[Car alloc] init];
NSLog(@"Car is %ld",[c retainCount]);
[c release];
//[c release];
NSLog(@"Car is %ld",[c retainCount]);
return 0;
}
复制代码
运行结果:
2014-06-07 10:58:18.068 dui[745:303] Car is 1
2014-06-07 10:58:18.071 dui[745:303] Car is 1
Program ended with exit code: 0
复制代码
我想问Car类型的对象已经release了,为什么retainCount还能返回1啊?难道是计数器在对象回收了之后又保存了一份?
作者:
大龄产妇
时间:
2014-6-7 11:21
retainCount不是0,只能说明对象即使已经销毁了,这个值仍然可能大于0。(猜测)
作者:
从┧靇┟开始
时间:
2014-6-7 12:20
没开启僵尸对象管理吧 已经调用僵尸对象了 给一个已经销毁的对象发送retaincount消息 报野指针错误
作者:
Freedam
时间:
2014-6-8 10:46
从┧靇┟开始 发表于 2014-6-7 12:20
没开启僵尸对象管理吧 已经调用僵尸对象了 给一个已经销毁的对象发送retaincount消息 报野指针错误 ...
把这个忘了,的确是没开僵尸对象管理。开完了之后就好了。谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2