Как удалить наблюдателя для NSNotification в UIView? - PullRequest
7 голосов
/ 23 декабря 2010

Я добавил наблюдателя в пользовательский UIView, который я создал в initWithFrame:.

[[NSNotificationCenter defaultCenter] addObserver:self 
         selector:@selector(updateZipFromLocation:) 
          name:@"zipFoundFromLocation" 
           object:nil];

Проблема в том, что это представление является подпредставлением.Когда представление загружается снова, оно снова вызывает сообщение initWithFrame, таким образом добавляя двух наблюдателей и так далее.Как я могу удалить наблюдателя, когда вид исчезнет?Поскольку это UIView, он говорит, что viewWillDisappear:(BOOL)animated не является допустимым методом.Есть идеи?

1 Ответ

12 голосов
/ 23 декабря 2010

Вы сказали, что initWithFrame: вызывается более одного раза, поэтому я предполагаю, что это означает, что представление уничтожается и воссоздается. Вы можете удалить представление в качестве наблюдателя в dealloc, который будет вызываться, когда представление больше не удерживается кем-либо:

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    [super dealloc];
}
...