Почему NsnotificationCenter бросит исключение, когда я его отпускаю?

StackOverflow https://stackoverflow.com/questions/3086625

Вопрос

Это не так много вопросов, как размышляющая мысль - почему NsnotificationCenter бросает исключение, когда он выпущен? Я все еще новичок в разработке iPhone, и, таким образом, пока не знаю динамиков какао, поэтому было бы хорошо понять, почему.

Я назначаю DefaultCenter. к переменной, вызывая Addobserver: Selector: Имя: объект а затем выпустить предыдущую переменную, но вызов Уведомить выпуск Сбивает приложение. Я не делаю ничего странного в коде, поэтому было бы интересно узнать именно, почему это делает это.

Кто-нибудь побежал в эту проблему?

Это было полезно?

Решение

Из того, что я знаю о Nsnotifccation, вы не должны присвоить по умолчаниюцензеру к переменной, а скорее делать что-то вроде:

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

В этом фрагменте вы вызываете центр по умолчанию и регистрируя текущий объект для определенного сообщения.

А затем, чтобы опубликовать сообщение в Центре уведомлений, которое вы можете использовать:

[[NSNotificationCenter defaultCenter] postNotificationName:@"IncorrectLogin" object:nil];

Я использую вышеупомянутый во всем моем коде и не имею никаких проблем с этим.

Другие советы

Там должен быть только один центр уведомлений по умолчанию для вашего приложения, поэтому ни один из ваших классов не должен сохранять или освобождать его. Вы не хотите, чтобы ваш центр Уведомления исчез на вас, верно?

Я не думаю, что вы владеете объектом, и поэтому не должны освобождать его.

Помните NARC: New Olloc, сохранить, копировать. Если вы сделаете один из них, вы должны отпустить его.

Это не ваше для освобождения.

Помните правило NARC - вы выпускаете только то, что вы принесли, используя:

Новое выделить сохранить или скопировать.

Насквозь Видеть?

Что вы делаете с NsnotificationCenter, вы получаете копию Singleton, которая представляет центр уведомлений по умолчанию. Стоят бы читать на Singletons.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top