NSNotificationCenter Сообщение на ноль -> сбой - PullRequest
0 голосов
/ 24 января 2012

Мой TableViewCell регистрируется для уведомлений. Но я не могу отменить регистрацию, потому что я не знаю когда. Я пытался создать подкласс NSNotificationCenter, но я не пробовал это правильно.

Некоторые идеи, как это исправить?

Ответы [ 2 ]

2 голосов
/ 24 января 2012

Проблема здесь в том, что UITableViewCell редко получает dealloc 'ed

Обычно вы хотите вызвать [[NSNotificationCenter defaultCenter] removeObserver:self] в вашем методе подкласса prepareForReuse.(Обязательно вызовите [super prepareForReuse]; в вашей реализации!)

1 голос
/ 24 января 2012

Классический подход заключается в регистрации уведомлений в производном классе UIViewController в viewDidLoad и отмене регистрации в viewDidUnload.

Для производного класса UIView вам действительно стоит подумать дважды, если выидти правильным путем (смешивая логику дисплея с бизнес-логикой).Однако вы можете зарегистрироваться в initWithFrame и отменить регистрацию в dealloc.

Поскольку UITableViewCell является UIView производным, нужные места могут быть зарегистрированы в initWithStyle и отменены в dealloc.(если вы не используете свои ячейки повторно).

...