Custom Deloc и Arc (Objective-C)

В моем небольшом приложении iPad у меня есть функция «Язык переключения», которая использует наблюдатель. Каждый контроллер представления регистрирует себя своим наблюдателем во время его ViewDidload: .

- (void)viewDidLoad
{
    [super viewDidLoad];
    [observer registerObject:self];
}

Когда пользователь попадает на кнопку «Изменить язык», новый язык хранится в моей модели, и наблюдатель уведомлен и вызовов Selectoreui: SELECTROCTOR на своих зарегистрированных объектах.

Это работает очень хорошо, за исключением случаев, когда у меня есть контроллеры просмотра в таббарконтроллере. Это связано с тем, что когда вкладка нагружает нагрузку на вкладку, она выбирает вкладки иконы из своих дочерних контроллеров без инициализации видов, поэтому ViewDidload: не вызывается, поэтому те контроллеры просмотра не получают уведомления об изменении языка. Из-за этого я переместил мою registerObject: призывает к методу INIT .

Назад, когда я использовал ViewDidload: для регистрации с моим наблюдателем, я использовал ViewDidUnload: , чтобы отменить регистрацию. Так как теперь я регистрируюсь в INIT , это имеет большое смысл не регистрировать в DEALOC .

Но вот моя проблема. Когда я пишу:

- (void) dealloc
{
    [observer unregisterObject:self];
    [super dealloc];
}

Я получаю эту ошибку:

arc запрещает явное сообщение Отправить «deamloc»

, поскольку мне нужно позвонить [Super Dealoc] для обеспечения правильной очистки суперкласс, но ARC запрещает это, я сейчас застрял. Есть ли другой способ получить информацию, когда мой объект умирает?

207
задан Carter Sande 12 May 2014 в 17:02
поделиться