2012-01-01 25 views
3

すべてのアプリケーションにはアプリケーションデリゲートがあります。アプリケーションデリゲートはCocoa/Cocoa-touchアプリケーションに登録されています

"SomeClass"(UIApplicationDelegateのサブクラス)が私のアプリケーションの代理人であることを指定/登録するコードのどこにありますか?

+4

これは 'UIApplicationDelegate'のサブクラスではありません。これは 'UIApplicationDelegate'プロトコルに準拠したクラスです – albertamg

+2

さらに、ニックピックするには、デリゲートのクラスではなくクラスの_instance_です。 – Monolo

答えて

4

、これはラインとmain.mで行われます。UIApplicationMain()の4番目の引数がnilされていない場合

UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

、関数は、指定されたクラスのインスタンスを作成し、それを割り当てます。 UIApplicationオブジェクトのデリゲートとして。

あなたはストーリーボードを使用しない場合、接続はアプリケーションデリゲートオブジェクトが順番にUIApplicationMain()機能によって作成されたUIApplicationインスタンスでファイルの所有者(の代理人として作成され、接続されMainWindow.xibで作られて)。

+0

それはあなたがストーリーボードを使用するかどうかにかかわらず、 'UIApplicationMain'で終わりました。変更がいつ起こったのか分かりませんが、Xcode 4.2.1では、Cocoa Touchテンプレートのどれもメインペンを使用していません。 –

0

これは私が自分のアプリケーションのためのアプリケーションデリゲートを見つける方法です...

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 

アプリデリゲートのクラス名は、単に「AppDelegate」に続くアプリの名前です。プロジェクトのファイルリストにそのクラスが表示されますが、自動的に作成されます。ファイル "MyAppDelegate.m"を探してください。

このクラスには、 "windowing"アプリケーションのMainWinodw.xibの代理責任が割り当てられています。ウィンドウアプリケーションを使用していない場合は、 "main.m"ファイルのUIApplicationMainへの呼び出しで割り当てが見つかります。あなたはストーリーボードを使用する場合は

+0

ここで、 'MyAppDelegate'がアプリケーションのメインデリゲートであることを指定します – Anand

+0

申し訳ありませんが、私は上記を明確にしました。しかし、私は編集中にオレがちょうど同じことを言っているのを見ました!いずれにせよ、あなたが必要とする情報を見つけたことを願ってください。ありがとうございます。 – EFC

+0

私はそれらを持っている – Anand

関連する問題