最初からiOSアプリケーションをビルドしていますが、エラーがあります。ソースは、テンプレートから作成開始したので、そのappdelegate.hは次のようになります。@interfaceまたは@protocolの中で変数を宣言できません
@interface myAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
myViewController *viewController;
}
BOOL myBool; // intended to be globally accessible
NSString *myString; // intended to be globally accessible
@end
私はグローバル変数にとして、他の多くの.mソースファイルからのmyString * myBoolとを参照してください。
XCode 3.2.6以下では、コンパイル時に問題が発生したことを覚えていません。
3.2.6では、コンパイル時に、appdelegate.hのこれらのグローバル変数を指し示す警告が表示されました。「変数は@interfaceまたは@protocolの中に宣言できません。コンパイルやアプリケーション実行時にそれ以上の問題はなかったので、残念ながら私はこれらの警告を考慮しませんでした。
XCode 4.2を使用して、以前の警告がビルドエラーに変わったため、このソースをコンパイルできません。それらは参照し、 "グローバル変数"への参照がある異なる.mファイル内の各行を指します。
これらの変数/参照にグローバル変数としてアクセスしたいと考えて、この問題を簡単に修正する方法はありますか?
その他の質問:これまでに受け取った回答(皆さんありがとう)、XCode v3.2.6の下で警告が表示されなかった理由、3.2.6の警告私の側からの本当の誤りですか?なぜコードはまだコンパイルされていて問題なく実行できるのでしょうか?
この意味での「グローバル」変数は、通常、悪い考えですオブジェクト指向プログラミングでは、ローカリティとカプセル化に逆らっています。このテーマについてオンラインでたくさんの読書があります。 –