黑马程序员技术交流社区

标题: 从NSMutableArray移除对象,引用计数的问题 [打印本页]

作者: liury    时间: 2015-11-26 16:30
标题: 从NSMutableArray移除对象,引用计数的问题
普遍规律
1.如果方法名是add/instert 开头,那么被添加的对象计数会+1
2.如果方法名是remove/delete开头,那么被移除对象会-1
然后我就写了下面的代码
  1. @autoreleasepool {
  2.     Person *p = [Person new];
  3.     NSMutableArray *arr = [[NSMutableArray alloc]init];
  4.     [arr addObject:p];
  5.     [arr addObject:p];
  6.     [p release];
  7.     [arr removeObject:p];
  8.     [arr removeObject:p];
复制代码
单步执行时,第一次执行[arr removeObject:p];  p对象就被释放了。
不对,不对,removeObject,引用计数不是-1,怎么释放了。

想不明白,把所有用到的对象都打印了一下。原来,[arr removeObject:p];会把数组中所有的p都移除,第一次执行数组就空了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2