心はいつも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

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

  関連記事

WindowsキーボードをMacで使う

キーボード難民です。Mac miniでApple純正のキーボードを使っていました …

no image
gamilアカウントが乗っ取られました

朝起きてすぐ行うメール確認。iphoneでgmail接続できないってエラーが出る …

no image
wordpressはじめます

ブログを立ち上げるのは久しぶりです。 以前から、ブログメディアをやりたいと思って …

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

3.3.2タイトルのテストをパスさせる。です。 ひとまず、静的ページをhtmlの …

Chromeでの文字化けを対処しました。

WordPressで自作テンプレを作ってみたのはよいものの、困った問題が2つ。 …

使ったらダメなiPhoneケーブル

iPhoneのApple純正ケーブルって、はげやすくないですか?iPhone5用 …

no image
RailsTutorial4.0を高速で復習する。4.1章の途中から。

さて、4.1章の途中にある、変だなと思っている箇所、 リスト4.4 Homeペー …

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

10.3.3フィードの原型、です。 仕様の確認 ユーザーログイン後、トップページ …

パーフェクトRuby 2章Rubyの基礎 2-8 様々な代入式

p66 2-8-1 多重代入 まとめて代入する横着なやり方。 a,b = 1,2 …

詳解 Objective-C 2.0 第3版

Rubyの言語仕様を勉強する傍ら、Objective-Cも言語仕様ベースで勉強し …