Obj.C

obj.C:Objective-Cの構造

基本的なことがわからないまま先に進んでいますので、時々、揺り戻しにあいます。

サンプルコードの行数が長くなってきたのでモジュール化とまでは行かないまでも、まとまった単位に分割したくなりました。しかし、簡単にわからなかったので、結局、順を追ってやる羽目になりました。

初心者のためのObjective-Cプログラミング入門が役に立ちました。その説明はXcode 4.2なので、現在のXcode 5.0.2とは違う箇所もありますが、重大な問題はありませんでした。コードは自分の理解に役立つように書き換えました。

気がついた点は次の通りです。

【main.m】

  • ソースコードはプロジェクト単位にまとめればいいようですね。。まあ、そんなこともこれからです。
    プロジェクトを作成したときに同時にmain.mが作られ、あとでクラスを作成したときにmain.mから呼び込まれる.h(ヘッダ)と.m(実行部分)からなるクラスが作られます。
  • クラスは、main.mから呼び込む(読み込む)マクロやサブルーチン、あるいは関数の相当です。アセンブラのマクロとほぼ同じで呼び出しパラメタの設定ができ、同等機能の実装が可能になります。大きな違いは、アセンブラがソースコードをマクロの位置に展開するのに対し、多分、まちがいなくObjective-Cはそうしないことです。
  • 知りたかった点で重要なことは、
    ①「#import “クラス.h”」で組み込むクラスのヘッダを定義する。これでmain.mとクラス内のインスタンスは関係づけされます。
    #import “MyTestClass.h”
    ②main.mとクラスではデータの受け渡しをインスタンスで行います。MyTestClass *classMemory = [MyTestClass alloc];のように暮らすメモリを定義します。
    ③メソッドを実行する前に、クラスメモリをイニシャライズします。
    classMemory = [classMemory init];
    ④メソッドを呼び出します。呼び出し方は[出力エリア メソッド名 入力エリア]のような形式か、その短縮・拡張。
    [classMemory callSetMessage:@”This is First Object!!”];
  • なお、Xcodeでどのテンプレートを選ぶかにより、ソースコードのジェネレートパタンが変わります。

スクリーンショット 2014-01-10 19.49.28

【クラス .h】

  • @interfaceの中にインスタンス変数を定義します。実際のエリア(メモリ)は、main.mでクラスメモリとして定義・確保します。
    NSString *returnMessage;
  • メソッドの形式を定義します。
    -(void)callSetMessage:(NSString *) in_messageArea ;

スクリーンショット 2014-01-10 19.49.00

【クラス .m】

  • main.mからの呼び出しパラメタであるインスタンス変数とインスタンス名の形式を定義し、命令を書きます。
    -(void)callSetMessage:(NSString*) in_messageArea {   実行部分 };
  • リターンメッセージのエリアも実装部分として定義しないといけないです
    -(NSString*)returnMessage {
    return returnMessage;

スクリーンショット 2014-01-10 19.48.36

Categories: Obj.C, 技術

Tagged as: , , ,