2016-09-05 3 views
0

私はiOSが新しく、Appdelegateのコールバックとフィールドの機能の周りに頭を抱えようとしていました。 がAppdelegateのヘッダViewControlerのボタンに今すぐコールバックの上の1iOS Appletagateフィールドの人口とオブジェクトの作成

- (void)applicationDidBecomeActive:(UIApplication *)application { 

      _GlobalUsername = @"username"; 

} 

でこのプロパティに値を取り込み

@property NSString* GlobalUsername; 

でグローバルプロパティを宣言:だからここ

は私がやっているものです私はAppDelegateのオブジェクトを作成していて、GlobalUsernameにアクセスし、textViewを使用して画面に表示しています。

ここで私が理解できないことは、GlobalUsernameの値がAppDelegateのオブジェクトにどのように関連付けられているかということです。アプリケーションがアクティブになったときにGlobalUsernameに値が設定されました.Applelegateのインスタンスを作成したときではないので、sharedApplicationメソッドによって返されたオブジェクトには、この情報がカプセル化されています。

おかげさまでありがとうと思います。

+0

'sharedApplication'が「シングルトンパターン」を使用しています。これは 'AppDelegate'の新しいインスタンスを作成していません。そのパターンの詳細を探します。 Objective-Cでは、通常、独自のクラス '+(id)sharedInstance;'で宣言しています(それに似た名前を付けたコードがたくさんあります)。 – Larme

+0

これは意味があります。私はシングルトンの大まかなアイディアを持っています。 Appelegateのインスタンスが既に起動されているときにメモリ内に作成されていると仮定し、AppelegateのsharedInstanceメソッドを使用してこの同じインスタンスが渡され、AppelegateのsharedInstanceメソッドを使用してアクセスできると仮定して修正しますか? – nitinsh99

+0

@ nitinsh99、ええ、あなたは絶対に正しいです –

答えて

1

delegateUIApplicationはシングルトンパターンで動作します。取得しようとするたびにインスタンスが1つしかありません。例:

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 
...Any API requests... 
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 

ネットワークインジケータの状態を保存しないたびに、UIApplicationの代理人が異なる場合。

関連する問題