NSMutableArray内存释放的研究代码

int main(int agec,char *agev){
NSString *str1 = [[NSString alloc] init]; // 1
NSString *str2 = str1;  //1
NSLog(@"str1.retainCount=%d,str2.retainCount=%d",[str1 retainCount],[str2 retainCount]); // str1.retainCount=1
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:str1]; //+1=2
NSLog(@"str1.retainCount=%d,str2.retainCount=%d",[str1 retainCount],[str2 retainCount]); // str1.retainCount = 2;
[array addObject:str2];  // +1=3
NSLog(@"str1.retainCount=%d,str2.retainCount=%d",[str1 retainCount],[str2 retainCount]); // str1.retainCount = 3;
[str2 release]; //-1=2  str1.retainCount = 2;
int i;
for( i=0;i<[array count];i++){
NSString *t = (NSString *)[array objectAtIndex:i];
NSLog(@"array[%d].retainCount=%d",i,[t retainCount]); // str1.retainCount = 2
}
NSLog(@"str1.retainCount=%d,str2.retainCount=%d",[str1 retainCount],[str2 retainCount]); // str1.retainCount = 2
[array release]; //-all=0 str1.retainCount=0 ->dealloc
NSLog(@"str1.retainCount=%d,str2.retainCount=%d",[str1 retainCount],[str2 retainCount]); // error throw
return 0;
}

转载于:https://my.oschina.net/rareliu/blog/23866

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值