Pergunta

    MyAppDelegate *appD;        
    appD = [UIApplication sharedApplication];

    if(appD.sw1.on)
        NSLog(@"It is ON");
    else
        NSLog(@"It is OFF");

Não dá erro durante a compilação.É executado sem qualquer aviso, mas não funciona.

Não vejo qual é o problema.

...

EDITAR:Meu Deus, deveria ter chamado o método delegado também:

appD = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
Foi útil?

Solução

Eu recomendo este método para compartilhar o delegado do aplicativo:https://coderwall.com/p/z4h4uw?i=2&p=1&q=&t%5B%5D=%21%21mine&t%5B%5D=%21%21marcadores

Outras dicas

e instanciei um appDelegate…

Não, você não instanciou nada, apenas declarou uma variável que pode apontar para o delegado do seu aplicativo.Mas você ainda não atribuiu nada a essa variável.

E instanciar outro objeto seria errado aqui, pois a instância delegada do aplicativo já existe.Você só precisa fazer referência ao delegado do aplicativo existente e atribuí-lo à sua variável:

appD = (myAppDelegate *)[[UIApplication sharedApplication] delegate];

(Aliás, você deve seguir as convenções de nomenclatura.Os nomes das classes devem sempre começar com letra maiúscula.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top