2010年8月19日木曜日

iphoneアプリ開発メモ1

ブログにiphoneプログラミングに関することを書くのは今回が初めてです。

androidアプリのversion1.1.0の開発とテストが終了しました。
問題がなければ、週末にandroid marketにupdateできそうです。

androidアプリは今後もupdateしていく予定ですが、次の新作アプリの開発はandroidだけでなくiphoneにも対応したいので、はじめてのiphone3プログラミングをちょこちょこ読んでは実装しています。

しかし、objective-Cの経験がないので、あいまいな理解な箇所が多いので、詳細objective-C2.0も読み進めながら理解を深めていこうと思います。
以下は、そのメモです。
基本java使いなので、javaと比較しながらのメモ書きです。

3章 「基本的なインタラクションを処理する」のまとめ

@propertyについて
詳細objective-C2.0p286 - P296
宣言プロパティ。
@interface(インターフェース部)で使用する。
javaでいうsetter, getterである。
ただし、@propertyは宣言を行うだけなので、
プロパティがインスタンス変数で実現されているか
どうかは関係ない。
オプションの指定で挙動が変化する。
オプションがない場合は、読み書き可能

はじめてのiphoneプログラミングでは、いきなり
@property(nonatomic, retain) IBOutlet UIWindow *window
とでてきた。
本の中では、この部分が激しく無視されていたが、詳細objective-C2.0
のp293 - p296に詳しく記述されていた。

retainはオブジェクトを保持して設定するオプション。
このオプションはプロパティがオブジェクトで、カウンタ管理方式を利用している場合に指定できる。
iphoneでは、ガーベジコレクションが使えず、リファレンスカウンタ
(参照カウンタ)方式でメモリ管理を行っている(理由はここでは
説明しない)。
なので、iphoneではp295の図12-3setterとgetter構成されることになる。

又、デフォルトでは、assignオプションが指定される。なので、iphone
での実装の場合は、属性としてretainを指定してやらなければばらない
のである。

nonatomicオプションは、同時に実行されるかもしれないメソッド定義をつくるという指示である。このnonatomicオプションを指定しないと、アクセサの定義には@synchronizedというコンパイラ指示子が含まれる。

@synthesizeについて
コンパイラ指示子
インターフェース部で宣言した属性に応じてアクセサが構成される。
@implementation 〜 @endまでのどこかに記述する。
また、通常のメソッドと異なり、インターフェース部に@property
の宣言がなければ、@synthesizeを記述することができない。

実際のインスタンス変数名と異なる名前をプロパティとして外部に提供
することも可能。

メソッドについて
ざっくりとした説明ではあるが、
- (戻り値の型)メソッド名:引数の型
が基本の形。
メソッド宣言で型を指定しないと、id型であるとみなされる。

メッセージ式について
詳細objective-C2.0p18-p19
オブジェクトはどのクラスに属するものでも、idという特別な型で表現される。
id obj;
のように。
これはメッセージ式と呼ばれる。
メッセージに引数がある場合は、コロン「:」をつける。

[sender titleForState:UIContorolStateNormal];

ってな感じ。
二つ以上の引数がある場合は、コロン「:」をつけた別のキーワード
を追加する。あるいは、キーワードなしでコロン「:」だけを追加する。

インスタンス生成と初期化
詳細objective-C2.0p20-p21
[クラス名 alloc]
[NSString alloc]
のように記述する。

ただし、このように生成されたインスタンスは、メモリ上に必要な領域が
確保されただけである。なので、通常はこの直後に初期化が必要。

[[クラス名 alloc ] init ];
[NSString alloc] initWithFormat];
のように記述する。

cocoaでは、イニシャライザはinitか、initから始まるメソッド名を
もつものが多い。

デリゲートについて
委譲処理のこと。javaでもadapterパターンなどでよく利用しますね。
UIApplicationの代理として、UIApplicationDelegateを使う。
もっと進んだときに理解を進めるべきかな。


以上。
3章 「基本的なインタラクションを処理する」のまとめの終了。
良い本ですが、本当のプログラム初心者が理解できるかは結構疑問な本だと思います。

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...