I have used [anArray retainCount] to get the retain count of array..(i know this should not be used but i am using just for learning retain concept)
Following is my code.
NSString *str = [[NSString alloc] initWithFormat:@"a,b,c,d"];
NSArray *anArray =[[NSArray alloc]init];
NSLog(@"Retain count: %i", [anArray retainCount]);
anArray=[str componentsSeparatedByString:@","];
NSLog(@"Retain count: %i", [anArray retainCount]);
output
Retain count: 2
Retain count: 1
i think it should be opposite but….
Please do yourself a favor and don’t look at
retainCounttrying to learn how the memory management rules work. Instead refer to the friendly Apple Memory Management Guide.In your examples:
You have allocated “anArray” (by calling
alloc), so you are responsible for callingrelease.Now, you have obtained a new object (leaking the original, as seand said). This time, you do not own the object (because
componentsSeparatedByStringdoes not haveallocorcopyin its name), so you must not release it.Don’t worry about what the retainCount is; tend to your own knitting and release objects that you should and don’t release objects you don’t own.