在addObj后及时释放所添加的object
NSMutableArray *array = [NSMutableArray new];
NSString *str = [[NSString alloc] initWithFormat:@"a"];
[array addObject:str];
[str release];
[array release];
也就是说当你吧str放进array的时候,相当于创建了一个str的副本,而这个副本的生命周期也就交给了array来管理了, 你只要负责把原来的对象进行释放也就可以了。[array release]的时候会调用相应的方法对数组里面的元素进行释放。简单来说也就是谁污染谁治理了。
下面代码引用计数变化做了注释:
User *user = [[User alloc] init]; // user retainCount = 1
[nsarray addObject:user]; //retainCount = 2, 加到array里面的时候,array做了一次retain
[user release]; // user retainCount = 1
// array自己dealloc的时候,会把每个元素release一次
O了,上面就平衡了