#import "Person.h" #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { Person * p = [Person new]; NSUInteger count = [p retainCount]; NSLog(@"count = %lu", count); Person * p2 = [p retain]; NSLog(@"p2.retainCount = %lu", [p retainCount]); [p release]; [p release]; NSLog(@"p Soon to be released , Because retainCount = %lu", [p retainCount]); } return 0; }
手动内存管理[9421:376171] count = 1
手动内存管理[9421:376171] p2.retainCount = 2
手动内存管理[9421:376171] Person 已经挂了
手动内存管理[9421:376171] p Soon to be released , Because retainCount = 1 //即便retainCount已经0了 也执行了dealloc方法, 怎么还显示1呢???
原文:http://www.cnblogs.com/stone1022/p/5079459.html