1.retain 是指针拷贝 copy 是内容拷贝
2.如果想在set方法中不修改外部传递过来的字符串,则使用copy,否则使用retain
//
// main.m
#import <Foundation/Foundation.h>
@interface Person : NSObject
@end
@implementation Person
-(void)dealloc{
NSLog(@"dealloc");
[super dealloc];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:5];
Person *p1 = [[Person alloc]init]; //+1
[dict setObject:p1 forKey:@"ccc"];
NSUInteger r = [p1 retainCount];
NSLog(@"%ld",r);//2
[dict removeObjectForKey:@"ccc"];
r = [p1 retainCount];
NSLog(@"%ld",r);//1
[p1 release];
/* NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];
Person *p = [[Person alloc]init]; //+1
[array addObject:p];//向可变数组添加会使引用计数加1 +1
NSUInteger r = [p retainCount];
NSLog(@"%ld",r);//2
[array removeObject:p]; //删除会使引用计数减一 -1
r = [p retainCount];
NSLog(@"%ld",r);
[p release];*/
}
return 0;
}