0

iOSアプリケーションでは、にいくつかのアプリケーションロジックを実装しましたAppDelegate

いくつかのViewControllerなどがを呼び出す必要があるので、Interface BuilderにAppDelegate配置し、 anを指定して、それにリンクを描画しました。AppDelegateViewControllersIBOutlet AppDelegate*

アプリでは、作成されたインスタンスが2つあるように見えます。1AppDelegateつは呼び出されてすべての通知を受け取り、もう1つはにリンクされていViewControllersます。

だから私は私のアプリをで使用するように変更しましたViewControllers

app_del = (AppDelegate*)[[UIApplication sharedApplication] delegate]

それから私はこれを呼んでいappDelegateます。ただし、これは通知を受け取るインスタンスとは異なります。誰かが理由を説明できますか?

誰かが何が悪いのか教えてもらえますか?グーグルからの私の疑惑は、iOSがAppDelegateインスタンスを作成し、Interface Builderがそのインスタンスを認識せず、別のインスタンスを作成するということですか?あれは正しいですか?

Interface Builderでインスタンスを最適に作成/計画する方法、起動時にアプリケーションで作成される順序、およびすべて作成されたことを信頼できる通知について、誰かにヒントを教えてもらえますか?

ヒントをありがとう、Torsten。

4

1 に答える 1

2

あなたの疑いは正しいです。iOS は、アプリの起動時にアプリケーション デリゲートのインスタンスを作成します。このインスタンスは、すべてのデリゲート イベントを受け取るように登録されているインスタンスです。ここを参照してください。

xib またはストーリーボードに追加したものはすべて新しいインスタンスになり、機能しません。

アプリケーション デリゲートへポインターを取得するには、次のメソッドを使用します。

[[UIApplication sharedApplication] delegate];

便利に利用できるグローバル データまたはメソッド ストアとしてアプリケーション デリゲートを使いすぎてはならないという考え方がありますが、それはこの回答の範囲外です。

于 2012-11-24T08:10:10.080 に答える