0

定義するときに静的型付け能力を失っているようですが、

#define myAppDelegate (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate]

これをする、

[myAppDelegate doSomething];

XcodeはdoSomethingが何であるかを知りませんが、私が何をしているかを知っている限り、コンパイルして正常に実行され、 doSomethingは実際にmyAppDelegateに存在します!

これを克服する方法はありますか?

4

1 に答える 1

1

あなたはそれを失うことはありません、いいえ-あなたはおそらく、を省略しているでしょう#import、あるいは#importsの順序が間違っているかもしれません。

これを克服する方法はありますか?

関数を使用するだけです:

WorkClockAppDelegate * myAppDelegate() {
  // TODO add error checking
  return (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate];
}

または方法:

+ (WorkClockAppDelegate *)workClockAppDelegate {
  // TODO add error checking
  return (WorkClockAppDelegate *) [[UIApplication sharedApplication] delegate];
}

型安全性を紹介します。

変数を使用することもできますがextern、それはあまり安全ではありません。

使用する#defineことは良い解決策ではありません、imo。

于 2012-08-18T22:04:20.970 に答える