Когда я компилирую с анализатором, я получаю пару сообщений.У меня объявлены следующие свойства:
@property (nonatomic, retain) SyncServicePrimary *syncAndCartOne;
@property (nonatomic, retain) SyncServiceSecondary *syncAndCartTwo;
Этот метод вызывается из applicationDidBecomeActive
, и я получаю «Потенциальную утечку выделенного объекта».
-(void)makeTheCartObjectsForCountry:(NSString*)country_key{
self.syncAndCartOne = [[SyncServicePrimary alloc] init];
self.syncAndCartTwo = [[SyncServiceSecondary alloc] init];
}
Это вызывается в applicationWillResignActive
;здесь я получаю «Неверное уменьшение счетчика ссылок объекта».
-(void) removeTheCartObjects{
[self.syncAndCartOne release];
self.syncAndCartOne = Nil;
[self.syncAndCartTwo release];
self.syncAndCartTwo = Nil;
}
Если я установлю объекты на autorelease
, ошибка исчезнет, но я хочу, чтобы объекты были освобождены, когда приложениепрячется.
Это то, что я делаю правильно, но это слишком далеко, чтобы анализатор мог видеть начало и конец, или это то, что я могу сделать лучше / правильно, чтобы он не жаловался?
Более чем вероятно, что я упускаю простую концепцию в отношении циклов release
и alloc
(я пришел из PHP и C #).