1 NSMutableString*tempString=[[NSMutableString alloc]initWithFormat:@"%@",@"testmemory"];
2 NSLog(@"tempString retainCount-----%D",[tempString retainCount]);
3 NSLog(@"tempString -----%p---%p",tempString,&tempString);
4
5 NSMutableString*string1=[tempString retain];
6 NSLog(@"string1 retainCount-----%D",[string1 retainCount]);
7 NSLog(@"string1 -----%p---%p",string1,&string1);
8
9 NSMutableString*string2=[tempString mutableCopy];
10 NSLog(@"string2 retainCount-----%D",[string2 retainCount]);
11 NSLog(@"string2 -----%p---%p",string2,&string2);
12
13
14 NSString*s=[[NSString alloc]initWithFormat:@"%@",@"hello"];
15 NSLog(@"s retainCount-----%D",[s retainCount]);
16 NSLog(@"s -----%p---%p",s,&s);
17 NSString*st=[s copy];
18 NSLog(@"st retainCount-----%D",[st retainCount]);
19 NSLog(@"st -----%p---%p",st,&st);
20 NSString*str=[s retain];
21 NSLog(@"str retainCount-----%D",[str retainCount]);
22 NSLog(@"str -----%p---%p",str,&str);
当retain 时是表示指向了同一个内存空间,只是内存空间的retainCount加了1,其他的都没变,但是当copy时,如果那个内存单元里面的值是不可变的时候,我们跟retain是一样的,只是内存空间的retainCount加了1!如果那个内存单元里面的值是可变的时候,其实在在内存中另外给分配了一块内存空间,然后把值赋给内存空间里面。原来那个内存空间的retainCount不加1,现在新分配的内存空间retainCount加1.
posted on 2010-12-11 15:24
雨 阅读(357)
评论(0) 编辑 收藏