iOS集合对象的内存管理

来源:互联网 发布:手机和信息安全 知乎 编辑:程序博客网 时间:2024/05/16 19:09

1. 概念综述

Person *p, NSMutableArray *arr
数组中存放一个对象,实际上存的是对这个对象的引用,使该对象的retainCount+1,数组中加入两次该对象,则该对象的引用计数加2,当从数组中移除一次,则释放一个引用,当执行[arr release]时,会向数组中的每个对象发送一次release消息。总结一下,数组中存放对象存的是对该对象的引用。
这里写图片描述

2. 示例代码

#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) {    @autoreleasepool {        Person *p = [Person new];        NSLog(@"%lu",p.retainCount);        NSMutableArray *arr = [NSMutableArray array];        [arr addObject:p];        NSLog(@"%lu",p.retainCount);//        [arr removeLastObject];        [arr release];//        Person *p2 = [p retain];        NSLog(@"%lu",p.retainCount);//        [p2 release];        [p release];    }    return 0;}
0 0
原创粉丝点击