Я знаю, что это распространенная проблема, поэтому мне нужно объяснение, чтобы у меня не возникало этой проблемы. В моем заголовочном файле я определил UIAlertView и сохранил его, как показано:
@interface myController {
UIAlertView *alert;
}
@property (nonatomic, retain) UIAlertView *alert;
В моей реализации я использую и повторно использую это предупреждение следующим образом:
@synthesize alert;
...
if (self.alert != nil) {
[self.alert release];
}
self.alert = [[UIAlertView alloc] initWithTitle:title
message:message
delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles: @"Ok To Send", nil];
[self.alert show];
Я также сообщаю об этом в моем dealloc.
Итак, я слышал золотое правило по управлению памятью, но, видимо, я его не понимаю. Золотое правило гласит, что вы никогда не должны выпускать объект, который вы не сохранили или не получили с помощью alloc. Вы всегда должны в конечном итоге освободить объект, который вы либо сохранили, либо получили с помощью alloc.
Я сохранил его в заголовочном файле, поэтому в конечном итоге я должен выпустить его в dealloc. В моей реализации я выполняю выделение объекта оповещения более одного раза, поэтому каждый раз, когда я готов перераспределить его, я освобождаю старый.
Пожалуйста, помогите мне понять, что я неправильно понимаю.