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);
當(dāng)retain 時(shí)是表示指向了同一個(gè)內(nèi)存空間,只是內(nèi)存空間的retainCount加了1,其他的都沒(méi)變,但是當(dāng)copy時(shí),如果那個(gè)內(nèi)存單元里面的值是不可變的時(shí)候,我們跟retain是一樣的,只是內(nèi)存空間的retainCount加了1!如果那個(gè)內(nèi)存單元里面的值是可變的時(shí)候,其實(shí)在在內(nèi)存中另外給分配了一塊內(nèi)存空間,然后把值賦給內(nèi)存空間里面。原來(lái)那個(gè)內(nèi)存空間的retainCount不加1,現(xiàn)在新分配的內(nèi)存空間retainCount加1.
posted on 2010-12-11 15:24
雨 閱讀(369)
評(píng)論(0) 編輯 收藏