2012-01-21 9 views
-3

コンソールアプリケーションでは、一般的にメインプログラムがあります。メインファイルには、プログラムで実行する内容を入力します。イベント駆動型のGUIプログラムでは、Visual C#Windowsフォームなど、各関数のイベントハンドラがあります。GUIを備えたCocoaアプリケーションのエントリポイント/コントロールフローとは何ですか?

CocoaのGUIアプリケーションでは、変数を作成してコマンドを実行できる集中化された場所がありません。たとえば、新しいクラスを作成し、そのメンバー関数とデータをすべて定義できますが、実際にそのクラスの新しいオブジェクトを作成する場所はありません。私の「実際のプログラム」はどこに置くのですか?私はプログラムのすべての部分がまとめられたファイルを見つけることができません、私はクラスを定義することができるように見えます。メインファイルと関数は存在しますが、それらは使用されていません。main()はアプリケーションを起動するだけです。

これはどのように機能しますか?私のプログラムのコードはどこに置くのですか?

+0

http://gnustep.made-it.com/BG-objc/#AEN73 –

+0

申し訳ありませんが、私の誤りは、コンソールアプリケーションではなくObjective CをCocoaで使用することです。 – fdh

+0

@Farheadそれはエントリーポイントとは関係ありませんか? –

答えて

4

ココアは、.NETのような多くの方法で、環境を駆動するイベントです。大部分のケースでは、あなたがそれを呼び出すのではなく、システムがあなたに電話をかけます。 C#の経験と同様に、さまざまな場所に接続し、呼び出されるまで待つことになります。

スタートアップの「もの」を置く場所は2つあります。まず、ストーリーボードまたはメインnibファイル(ストーリーボードはiOS 5の新機能)です。メインのnibファイル(またはストーリーボード)で作成したオブジェクトは、プログラムの起動時に自動的に作成されます。彼らはawakeFromNibviewDidLoadのようなメソッドに応答することができます。

他の主な理由は、アプリケーションを委任することです。これはあなたのすべてのプログラムのためのホームではありませんが、一般に実行される "あなたの"コードの最初の部分です。特に、起動コードをapplicationDidFinishLaunching:withOptions:に追加する必要があります。

さらに先に進む前に、iOS Starting Point文書で時間を過ごすことをおすすめします。先を少しスキップしたい場合はiOS App Programming Guideに行くことができます。 Macを使いたい場合は、Your First Mac Appで始まります。

アップルのドキュメントは、あなたがいったん自分がどこにいるのかを感じると非常に良い傾向があります。あります。そして、ココアは信じられないほど一貫しています(一度、一貫性のあるものが得られたら、)。リファレンスドキュメントだけでなく、「プログラミングガイド」と書かれたドキュメントを必ず読んでください。また、リファレンスドキュメントを読むときは、上部の段落を必ず読んでください。すべてのメソッドの説明にジャンプするだけで、役に立つ情報のほとんどをスキップします。

+0

ありがとうございます。それは1つのことを除いてすべてに答えました。アプリケーションデリゲートのメンバ関数への呼び出しを行いますか?もしそうでなければ、メンバー関数への呼び出しはどこに置かれますか? – fdh

+1

これは、あなたが参照しているメソッドの種類に強く依存します(ObjCは決してそれらを「メンバ関数」と呼ぶことはありません)。要点は、制御しないイベントループがあることです。さまざまなイベントが発生したときに、デリゲートメソッドを呼び出します。ですから、アプリケーションデリゲートからあなたのオブジェクトの1つに対してメソッド 'init'を呼び出すのが一般的です。しかし、ほとんどの場合、システムによって呼び出されることになるでしょう(もう一度、.NETのように)。 –

+0

パーフェクト、ありがとう。 – fdh

1

通常、プロジェクトにはmain.mファイルがあります。

デフォルトのiOS AppのXcodeのによって生成された1:

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([MPAppDelegate class])); 
    } 
} 
+0

申し訳ありませんが、私はCocoaでObjective Cを使用することを話していますが、コンソールアプリケーションでは使用していません。 – fdh

+2

GUIアプリケーションでもコンソールアプリケーションでも、最初のエントリポイントは本当にmain()です。 –

関連する問題