A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

普遍规律
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都移除,第一次执行数组就空了。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马