Я работаю над универсальным приложением для iPad и iPhone. У меня есть общий делегат приложения, делегат приложения iPad (подклассы совместно используемый) и делегат приложения iPhone (также подклассы общего) - все это зависит от шаблона в XCode. Приложение также имеет общий контроллер просмотра для навигации. В iPad он используется как главный контроллер просмотра в SplitViewController
. В приложении для iPhone он отображается как контроллер корневого представления UINavigationController
.NSNotificationCenter не работает на стороне iPhone универсального приложения
В моем общем делете приложения я хватаю JSON
с моего веб-сервера, чтобы настроить приложение, и когда я завершил разбор этих данных, я отправляю уведомление NSNotificationCenter
(defaultCenter).
[[NSNotificationCenter defaultCenter] postNotificationName:kDataReady object:nil];
Контроллер общего вида является наблюдателем для этого уведомления.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onDataReady:)
name:kDataReady
object:nil];
Когда я запустить приложение на IPad, общий контроллер зрения собирание этого уведомления и вызов селектора соответствующим образом. При запуске на iPhone это не так. Общие классы между iPhone и iPad создаются в одном порядке, и я могу проверить это в журналах консоли. Я понятия не имею, почему это работает не так, как ожидалось. Помогите!
Метод addObserver не вызывается в делегате общего приложения. Делегат общих приложений отправляет уведомление. Контроллер представления, общий для iPad и iPhone, добавляет наблюдателя в его метод init. Такой же метод init вызывается на обоих устройствах, но работает только iPad. – 2010-12-16 23:20:59