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);
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.