读书人

刚学oc关于引用计数的有关问题

发布时间: 2013-06-25 23:45:41 作者: rapoo

刚学oc,关于引用计数的问题
为什么打印出的每次都是1,不是应该[p release] 后就-1的吗

#import "Person.h"
int main(int argc, const char * argv[])
{

@autoreleasepool {
Person *p = [[Person alloc] init];
NSLog(@"number1-------%ld",[p retainCount]);
[p setAge:12];
NSLog(@"number2-------%ld",[p retainCount]);
[p release];
NSLog(@"number3-------%ld",[p retainCount]);


}
return 0;
}


[解决办法]
release必须赋值nil,才能使引用计数为0

#import "Person.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
Person *p = [[Person alloc] init];
NSLog(@"number1-------%ld", [p retainCount]);
[p setAge:12];
NSLog(@"number2-------%ld", [p retainCount]);
[p release];
p = nil;
NSLog(@"number3-------%ld", [p retainCount]);
}
return 0;
}

读书人网 >Iphone

热点推荐