心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

詳解 Objective-C 2.0 第3版 CHAPTER2 Objective-Cのプログラム

      2014/05/11


Objective-Cの解説はメッセージから始まる。このメッセージという概念、もともと通信系システム出身の私にとってはわかりやすい。メッセージをうけとったらインスタンスが生成するという考え方。一般のObject指向言語でもメッセージをインスタンス生成の契機という形で受け取ってはいるけれど、メッセージの実態として意識することはあまりない。これは Objective-C がGUIもの、つまり人が考えて操作するという特性を持つがゆえだと思う。

02-01 オブジェクトとメッセージ

p18
オブジェクトはidという型を持つ。
id obj;

オブジェクトにメッセージに送る事は
[obj msg]の形式で書く。objがオブジェクト名でmsgがメッセージキーワード。

Objective-Cにやたら[]が出てきてキモチワルイのはこのせいだ。[]は配列じゃない。いや配列でも使う。
メッセージ式を配列の添字として書くと、
element = table[[obj msg]];
とキモチワルイ字面になる。なれるしか無い。elementが変数名。table[]が配列、[obj msg]がメッセージ、この場合は配列の添字として使っている。

続けざまにメッセージを送ることを書くと
[[[obj msg1]msg2]msg3];
なんともゆんゆん感がでてキモチワルイ。ここまで重ねると送っている感が出る。

メッセージは引数を持つ事ができる。メッセージ式の後に:で引数をつける。
[doc isSameDirectory:[info objctAtIndex: ++num]];
doc isSameDirectoryメッセージの引数が[info objctAtIndex: ++num]]という引数をもつメッセージの形になっている。

引数が2つ以上あるときは:で区切る。

cell = [albumview cellAtRow:i clumn:j];

p21
インスタンスの生成はオブジェクトにメッセージを送ることでできる。
[[クラス名 alloc] init]
他の方法で生成することもできるが、とりあえずallocしか書いてない。

p22
02-02 クラス定義
Objective-Cでは、クラスは、
・インターフェース部
・実装部
に分けて書く。

インターフェース部は
@interface クラス名:スーパークラス名
{
インスタンス変数の宣言;
}
メソッドの宣言;

@end

という構文。
ミソは、メソッドの宣言だけで処理は書かなくてもいいってこと。
えースーパークラスもいちいち書くんだって感じ。

インスタンス変数の宣言はC言語ごとく
 型 変数名;
で書く。Rubyみたいにいきなり変数名かいちゃダメ。

メソッドの宣言は、引数が無い場合は、

– (id)delegete;

と書く。メソッドの宣言っぽく見えない字面的に。

– (返り値の型)メソッド名;

ですね。

引数は、やはり:で区切って渡す。複数渡しも可。

– (id)cellAtRow:(int)row column:(int)col;

rowとcolは仮引数だってことはわかるけど、columnはなんぞや??
=>第2引数のメッセージキーワードだって。で、このメソッド名は cellAtRow:column:になる。

p24
クラスの実装部は、
@implementation クラス名
メソッドの定義
@end

メソッドの定義は、インターフェース部で宣言したメソッドの実処理を書いて行く。

p26
クラス定義(インターフェース部と実装部)の例が書いてある。List2-1,2-1
クラス1個の例なので、このままでは起動することができない。

p27
起動させるにはmain関数が必要。

main関数は独特だ。事あるごと(ユーザーがGUI操作するたびに)呼ばれると思うんだけど、都度メッセージを判定して該当の処理を行う、caseとかwhenとか書いていないけどそういう条件分岐的な処理をしている。

List2-3

p28
02-03 コンパイル
ターミナルからコンパイル、実行する方法が紹介されている。おお!

clang voltest.m -framework Foundation

a.outという実行ファイルができる。
実行するには

./a.out

 - テクニカル

Comment

  1. […] 詳解 Objective-C 2.0 第3版Posted on 2014年5月6日 詳解 Objective-C 2.0 第3版 CHAPTER2 Objective-Cのプログラム Posted on 2014年5月8日 詳解 Objective-C 2.0 第3版 CHAPTER3 継承とクラス Posted on […]

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
Rails 3.2と4.0、複数バージョンをインストールする

Rubyを複数バージョン入れて切り替えて使える事を確認しました。次はRailsを …

no image
G+ウィジェット設置してみました

(この投稿は別ブログameblo.jp/sweetfからの転載です) G+ウィジ …

no image
RailsTutorial4.0を高速で復習する。9.3.2章。

9.3.2サンプルのユーザー、です。 Faker gemで、実際にありそうなユー …

no image
RailsTutorial4.0を高速で復習する。6.3.3章。

6.3.3ユーザー認証、です。 新規ユーザー登録のときは入力で、:passwor …

no image
Rubyの%を使う記法のうち、 %w

Rubyで%を使う記法は、たのるー(たのしいRuby)によると、以下の6通り % …

RailsTutorial4.0を高速で復習する。7章

第7章ユーザー登録、です。 6章でuserモデルを作ったので、7章はwebでの登 …

no image
railsのエラーメッセージを日本語化

message:で渡すエラーメッセージや、その他いろんな箇所を日本語化します。 …

no image
MacBookAirにMacAppStoreからソフトをダウンロード

MacBookAir 10日目。快調です。 WindowsからMacの移行でつま …

no image
サーバー移転しました(2度目)

airpucci始まって2度目のサーバー移転しました。今まで入れていたプラグイン …

no image
Macで.htaccessを表示する設定

MacBook Air2代目。以前は行っていた.(ドット)がついたファイルをMa …