Objective-C - где поставить NSNotificationCenter? - PullRequest
0 голосов
/ 16 декабря 2009

У меня есть селектор NSNotificationCenter,

где это поставить? в делегате (если да, то где?) в контроллере?

где также поместить метод.

мне нужно освободить NSNotificationCenter?

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceNotificationReceived:) name:UIApplicationDidBecomeActiveNotification object:nil];



- (void)deviceNotificationReceived:(NSNotification *)notification
{
    [self.soundMgr endInterruption];
}

Ответы [ 4 ]

3 голосов
/ 16 декабря 2009

Метод deviceNotificationReceived: должен быть методом экземпляра аргумента addObserver:. В данном случае это self, поэтому ваш метод должен идти в том же классе.

Вы не должны выпускать NotificationCenter, поскольку вы не создавали и не сохраняли его.

Ваш вопрос было немного трудно понять, это то, что вы спрашивали?

2 голосов
/ 16 декабря 2009

Привет, у меня есть селектор NSNotificationCenter,

хорошо, вы имеете в виду, что у вас есть селектор для метода в NSNotificationCenter.

В Objective-C «селектор» имеет два значения. Может использоваться для обозначения просто к названию метода, когда он используется в сообщении с исходным кодом для объект. Это также, однако, относится к уникальный идентификатор, который заменяет имя, когда исходный код скомпилирован. http://developer.apple.com/mac/library/documentation/cocoa/....../ocSelectors.html

Итак, вы создали селектор, который ссылается на метод.

где его поставить?

Это переменная, вы можете хранить ее там, где, по вашему мнению, она вписывается в ваш дизайн.

в делегате

См. Выше.

(если да, то где?)

Это переменная, это зависит от вашего использования.

в контроллере?

У вас есть контроллер? Зависит от вашего дизайна.

где также поместить метод.

Какой метод?

мне нужно освободить NSNotificationCenter?

Нет, [NSNotificationCenter defaultCenter] возвращает ссылку на центр уведомлений, вы ее не освобождаете.

1 голос
/ 16 декабря 2009

Поскольку вы подписываетесь на уведомление UIApplicationDidBecomeActiveNotification, наиболее логичным местом для размещения уведомления является метод applicationdDidFinishLaunching вашего приложения-делегата.

Это первая точка, в которой вызывается ваш код, поэтому вы не можете установить ее раньше.

0 голосов
/ 16 декабря 2009

где его поставить?

Это зависит от того, когда вам нужно зарегистрироваться для уведомления. Один из способов - добавить наблюдателя в метод 'init' класса и удалить уведомление в методе 'dealloc' класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...