Если я попытаюсь выпустить tempSeedsArray
после seedsArray = tempSeedsArray
, я получу EXEC_BAD_ACCESS
, и Instruments покажет, что tempSeedsArray
был выпущен дважды. Вот мой viewWillAppear
метод:
- (void)viewWillAppear:(BOOL)animated {
NSString *arrayFilePath = [[NSBundle mainBundle] pathForResource:@"SeedsArray" ofType:@"plist"];
NSLog(@"HIT!");
NSMutableArray *tempSeedsArray = [[NSMutableArray alloc] initWithContentsOfFile:arrayFilePath];
seedsArray = tempSeedsArray;
NSLog(@"%u", [seedsArray retainCount]);
[seedsArray sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
[super viewWillAppear:animated];
}
seedsArray
- это NSMutableArray, установленный как свойство nonatomic
и retain
, и синтезируется.
Однако, если я изменю seedsArray = tempSeedsArray
на self.seedsArray = tempSeedsArray
(или [self seedsArray] = tempSeedsArray
и т. Д.), Я могу отпустить tempSeedsArray
. Может ли кто-нибудь объяснить мне просто, почему это так, потому что я очень растерялся!
Спасибо