3
    MyAppDelegate *appD;        
    appD = [UIApplication sharedApplication];

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

コンパイル中にエラーは発生しません。警告なしで実行されますが、機能しません。

問題が何であるかわかりません。

...

編集: OMG、デリゲートメソッドも呼び出す必要がありました:

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

2 に答える 2

2

アプリのデリゲートを共有するには、次の方法をお勧めします: https://coderwall.com/p/z4h4uw?i=2&p=1&q=&t%5B%5D=%21%21mine&t%5B%5D=%21%21bookmarks

于 2013-02-04T12:18:02.560 に答える
1

そして appDelegate をインスタンス化しました …</p>

いいえ、何もインスタンス化していません。アプリのデリゲートを指すことができる変数を宣言しただけです。しかし、その変数にはまだ何も割り当てていません。

アプリ デリゲート インスタンスが既に存在するため、ここで別のオブジェクトをインスタンス化するのは間違っています。既存のアプリ デリゲートを参照して、変数に割り当てるだけです。

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

(ちなみに、命名規則に従う必要があります。クラス名は常に大文字で始める必要があります。)

于 2011-02-20T00:05:06.767 に答える