Наконец-то выяснилось, что вызвало ошибку, приведенный ниже код вызывался несколько раз, что, в свою очередь, вызывало метод в моем исходном сообщении, и этот контроллер представления никогда не был освобожден, но даже если это было так, я не удалял его как наблюдателя.для этих уведомлений:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addNewEntity:) name:@"addSubEntity" object:nil];
}
return self;
}
Итак, я исправил ошибку, которая вызывает init несколько раз, и для безопасности я также вызываю removeObserver: на всякий случай, хотя этот контроллер представления используется повторно, поэтому он никогда не вызывается.
Мораль истории: удалите Observer перед освобождением!
- (void)viewDidUnload
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}