2009-12-15 2 views
0

У меня есть селектор NSNotificationCenter,Objective-C - где разместить NSNotificationCenter?

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

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

Мне нужно отключить NSNotificationCenter?

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



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

ответ

3

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

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

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

+0

ОК. поэтому, если мне нужно, чтобы мой ViewController получил это уведомление, например, после того, как вызов был введен и оставлен, и приложение вернуло приложение, чтобы вызвать этот метод, где я могу заставить NSNotificationCenter вызвать метод? – omri

+0

, вы должны, вероятно, поместить вызов внутри 'initWithNibName: bundle:', если вам это нужно в вашем ViewController. – cobbal

+0

Поскольку это приложение для iPhone, я думаю, что viewDidLoad: может быть лучше для него, а затем отменить регистрацию в viewDidUnload :. Обычно вы хотите, чтобы представление отвечало только на UIApplicationDidBecomeActiveNotification, только если оно было активным видом во время прерывания –

2

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

ладно, значит у вас есть селектор для метода в NSNotificationCenter.

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

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

где?

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

в делегатом

см.выше.

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

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

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

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

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

Какой способ?

Мне нужно освободить центр NSNotificationCenter?

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

1

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

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

0

где положить?

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

Смежные вопросы