普遍规律
1.如果方法名是add/instert 开头,那么被添加的对象计数会+1
2.如果方法名是remove/delete开头,那么被移除对象会-1
然后我就写了下面的代码
- @autoreleasepool {
- Person *p = [Person new];
- NSMutableArray *arr = [[NSMutableArray alloc]init];
- [arr addObject:p];
- [arr addObject:p];
- [p release];
- [arr removeObject:p];
- [arr removeObject:p];
- }
复制代码 单步执行时,第一次执行[arr removeObject:p]; p对象就被释放了。
不对,不对,removeObject,引用计数不是-1,怎么释放了。
想不明白,把所有用到的对象都打印了一下。原来,[arr removeObject:p];会把数组中所有的p都移除,第一次执行数组就空了。
|
|