2013-09-25 3 views
0

Используя NSNotificationCenter, он работал хорошо, пока я не начал отправлять очень быстрые сообщения в другой класс.NSNotificationCenter имеет максимальную скорость?

Что происходит быстро? его около 30-40 уведомлений в секунду. и я не получаю даже 1 из них. есть ли другой способ сделать это? Должен ли я обновить глобальный вместо этого?

//post data out . 
- (void)post:(NSString*)string 
{ 
    NSLog(@"done"); //the log is printing 
    NSDictionary *userInfo = nil; 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"connector" 
                 object:string 
                 userInfo:userInfo]; 
} 

Я знаю, что наблюдатель - это хорошая причина, по которой прежний код работал раньше. Большое спасибо.

+4

Какой смысл использовать центр уведомлений для прямого взаимного общения между _two_ classes ...? – holex

+0

С опасностью начать войну, ОП спрашивает об использовании 'NSNotificationCenter'. Независимо от того, является ли это хорошей идеей (как указано @holex), это [другая проблема] (http://stackoverflow.com/search?q=When+to+use+NSNotificationCenter). –

+0

@MikeD, не начиная войны, должна быть явная причина просить об этом, потому что все мы знаем, что центр уведомлений не предназначен для такого напряжения в основном. поэтому я спросил о точке ... – holex

ответ

2

Похоже, вы установили неправильный object, который должен быть объектом, который отправляет уведомление (или nil). То, что я думаю, что вы должны делать добавив string в userInfo:

NSDictionary *userInfo = @{@"somekey" : string }; 
[[NSNotificationCenter defaultCenter] postNotificationName:@"connector" 
                object:self 
                userInfo:userInfo]; 
+0

sh * t! вы правы :) но как это работает до сих пор? этот код был скопирован из другого состояния, что отлично работает, и теперь только после того, как я изменил то, что вы сказали, - это действительно работает. – Curnelious

3

Если вы отправляете 30-40 ОПОВЕЩЕНИЕ секунды вы должны действительно думать о вашей реализации снова.

Heres некоторые альтернативы:

  1. Creating your own delegates for callbacks
  2. Using a block

Проблема с NSNotificationCentre является то, что он посылает сообщение каждому наблюдателю - это может получить медленно и, как правило, используется для обновляя представления при изменении состояния (Вход/Выход).

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