【发布时间】:2013-04-23 08:49:13
【问题描述】:
通过一个简单的保留/释放场景来看看这个 code-sn-p:
#import <Foundation/Foundation.h>
@interface SomeClass : NSObject
@end
@implementation SomeClass
@end
int main(int argc, const char * argv[])
{
SomeClass *aClass = [[SomeClass alloc] init];
NSLog(@"retainCount: %lu", [aClass retainCount]);
[aClass retain];
NSLog(@"retainCount: %lu", [aClass retainCount]);
[aClass release];
NSLog(@"retainCount: %lu", [aClass retainCount]);
[aClass release];
NSLog(@"retainCount: %lu", [aClass retainCount]);
return 0;
}
这是结果输出:
2013-04-29 17:33:50.695 retainCount: 1
2013-04-29 17:33:50.697 retainCount: 2
2013-04-29 17:33:50.697 retainCount: 1
2013-04-29 17:33:50.698 retainCount: 1
最后一个 retainCount 应该是“0”,否则应用程序应该崩溃。为什么结果是“1”?!
【问题讨论】:
-
永远不要将
retainCount用于任何事情 -
retainCount没有任何意义。
标签: objective-c memory-management retaincount