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;
}