I thought it would be printed in order 0-1->0. This output was strangely different results. (0->3->2) Why is that?
ClassA.h :
@interface ClassA : NSObject
{
NSArray *array;
}
@property(nonatomic, retain)NSArray *array;
@end
main.c
int main(int argc, const char * argv[])
{
@autoreleasepool {
ClassA *classA = [[ClassA alloc]init];
NSLog(@"retainCount %lu", (unsigned long)[classA.array retainCount]);
classA.array = [[NSArray alloc]init];
NSLog(@"retainCount %lu", (unsigned long)[classA.array retainCount]);
[classA.array release];
NSLog(@"retainCount %lu", (unsigned long)[classA.array retainCount]);
}
return 0;
}
Output :
2014-02-10 11:58:24.459 retainCount[4031:303] retainCount 0
2014-02-10 11:58:24.461 retainCount[4031:303] retainCount 3
2014-02-10 11:58:24.462 retainCount[4031:303] retainCount 2