この回答によると、グローバル変数を宣言して定義しようとすると、次のエラーが発生します。
アーキテクチャー armv7 の未定義シンボル:
「_loggedIn」、参照先:
-[XYZAppDelegate アプリケーション:didFinishLaunchingWithOptions:] XYZAppDelegate.o 内
-[XYZFolderViewController viewDidAppear:] XYZFolderViewController.o 内
-[XYZFolderViewController loginViewController:didEnterUsername:password:] XYZFolderViewController.o 内
ld: アーキテクチャー armv7 のシンボルが見つかりません
clang: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)
ここで多くの回答を見つけましたが、それらはすべて異なる問題に言及しています (私が言える限り)。
XYZAppDelegate.h
... extern BOOL はログインしました。 ...
XYZAppDelegate.m:
...
@implementation XYZAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
ログイン = 0;
...
}
...
XYZFolderViewController.h
... extern BOOL はログインしました。 ...
XYZFolderViewController.m
...
@実装
...
- (void)loginViewController:(XYZLoginViewController *)loginViewController
didEnterUsername:(NSString *)ユーザー名
パスワード:(NSString *)パスワード
{
...
if ([ユーザー名 isEqualToString:ユーザー名] && [パスワード isEqualToString:パスワード])
{
ログイン = 1; /* 0 == ログインしていません。 1 == ログインしています。 */
...
}
...
}
このグローバル変数のポイントは、アプリにログインしている (またはログインしていない) ユーザーに関する情報を保持することです。externObjective-C での使用はクリーンなアプローチではないことを認識しています。ただし、extern使用法以外に、他の種類の解決策のヒントをいただければ幸いです。これを期待するのは初歩的な質問です。