I made simple experiment and found some strange behavior. Here some code - part of long method with ARC enabled:
MKObject *obj = [[MKObject alloc]init];
NSMutableArray *temp = [[NSMutableArray alloc]init];
[temp addObject:obj];
obj = nil;
temp = nil;
//here deallocating is called on obj (MKObject)
//other stuff
but if I change NSMutableArray
to NSArray
and literal initialisation
NSArray *temp = @[obj];
deallocating executed before autoreleasepool closed, not after setting nil
to all references. Did I missed something ?