appdelegate общий экземпляр делегата

    MyAppDelegate *appD;        
    appD = [UIApplication sharedApplication];

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

При компиляции ошибок не выдает. Запускается без предупреждения, но не работает.

Я не вижу, в чем проблема.

...

EDIT: OMG, нужно было также вызвать метод делегата:

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

person erkanyildiz    schedule 19.02.2011    source источник


Ответы (2)


Я рекомендую вам этот метод для совместного использования делегата приложения: https://coderwall.com/p/z4h4uw?i=2&p=1&q=&t%5B%5D=%21%21mine&t%5B%5D=%21%21bookmarks

person Sergi Gracia    schedule 04.02.2013

и создал экземпляр appDelegate…

Нет, вы ничего не создавали, вы просто объявили переменную, которая может указывать на делегат вашего приложения. Но вы еще ничего не присвоили этой переменной.

И создание экземпляра другого объекта здесь было бы неправильным, поскольку экземпляр делегата приложения уже существует. Вам просто нужно сослаться на существующий делегат приложения и назначить его вашей переменной:

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

(Кстати, вы должны следовать соглашениям об именах. Имена классов всегда должны начинаться с заглавной буквы.)

person Ole Begemann    schedule 20.02.2011
comment
Откуда мне знать, что именно вам нужно напечатать? Ты даже не говоришь мне названия своих классов. Линия, которую я предложил выше, верна. Поместите его в метод инициализации вашего класса. - person Ole Begemann; 20.02.2011