Problemas NSNotification
Quando minha classe é inicializada, ela se adiciona como um observador para várias notificações de Wi-Fi diferentes. Por algum motivo, o seletor não está em execução quando acontece alguma dessas coisas. Alguma ideia? Obrigado antes do tempo.
<code>-(id) init { if (self) { sself = self; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWModeDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWSSIDDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWBSSIDDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWCountryCodeDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWLinkDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:CWPowerDidChangeNotification object:nil]; </code>
UPDATE: Aqui está o método handleNotification:
<code>-(void) handleNotification:(NSNotification*) notification { NSLog(@"Notification Received"); } </code>
Eu incluí o framework CoreWLAN no meu projeto:
Eu baixei o CoreWLANWirelessManager.app e é isso que estou usando para referência. Curiosamente, o código da Apple está usando notificações obsoletas e ainda funciona. Eu tentei usar as novas APIs e as APIs obsoletas sem sucesso. Não tenho certeza se posso postar o código deles aqui, mas literalmente não há diferença. O seletor até tem o mesmo nome.
Por favor, não hesite em pedir mais detalhes.
ATUALIZAÇÃO (Após a resposta de Dustin): Eu criei um novo projeto na esperança de isolar o problema. Eu configurei meus arquivos .h e .m exatamente como você descreveu. Infelizmente, ainda não recebo notificações. Para mostrar que não estou mentindo (ou maluco), incluí duas capturas de tela (bastante cheias) que foram tiradas durante o mesmo tempo de execução. Aviso: (1. Eu tenho um ponto de interrupção no método handleNotification :. O aplicativo nunca faz uma pausa. (2. Eu incluí a janela de rede para mostrar o meu Mactem de fato mudou as redes Wi-Fi durante esse tempo de execução. (3. Nada é NSLoged
Rede 1:
Rede 2:
ATUALIZAÇÃO 17 de maio de 2012: A resposta de Dustin estava correta, mas o nome da interface Wi-Fi varia dependendo do hardware no qual o aplicativo está sendo executado. No meu caso, (MacBook Air; sem ethernet), meu Wi-Fi é en0 em vez de en1. Eu consegui pegar o arquivo plst de configuração do sistema das minhas mães no iMac, e o Wi-Fi é chamado de en1. Ethernet é en0. Obrigado a todos pela vossa ajuda.