集合(数组/字典/集)的内存管理

来源:互联网 发布:linux rhel6 root密码 编辑:程序博客网 时间:2024/04/29 01:30

Foundation framework中用于收集cocoa对象的集合有:NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、NSSet、NSMutableSet等

  1. 将一个对象添加到一个数组中, 那么数组会对对象进行一个retain

  2. 当数组移除一个对象之后, 会给这个对象发送一条release消息

  3. 当数组对象释放之后, 会给数组中所有的对象发送一条release消息

    Person *p1 = [Person new];    NSLog(@"%lu",p1.retainCount);    NSMutableArray *arr = [NSMutableArray array];    [arr addObject:p1];    NSLog(@"%lu",p1.retainCount);    [p1 release];    [p1 release];//    [arr removeObject:p1];//    [arr release];  Person *p2 = [Person new];  NSLog(@"%lu",p2.retainCount);  NSMutableDictionary *ditM = [NSMutableDictionary dictionary];  [ditM setValue:p2 forKey:@"1"];  NSLog(@"%lu",p2.retainCount);  [p2 release];  [p2 release];//  [ditM removeObjectForKey:@"1"];//  [ditM release];  Person *p3 = [Person new];  NSLog(@"%lu",p3.retainCount);  NSMutableSet *set =  [NSMutableSet set];  [set addObject:p3];  NSLog(@"%lu",p3.retainCount);  [p3 release];//  [p3 release];//  [set removeObject:p3];  [set release];
0 0
原创粉丝点击