「iPhoneプログラミング入門」サポートページ

このページは「iPhoneプログラミング入門」(工学社刊、ISBN 978-4-7775-1541-7)のサポートページです。


Xcode4アップデート、Mac App Storeで販売

2011年3月9日にリリースされたXcode4の、アップデートが出ています。
アップデートとは、「差分」ではなく、アップデートされたアプリケーションまるごとです。これからはじめてXcode4を入手する場合も、すでにお持ちのXcode4をアップデートする場合も、ダウンロード・インストール方法は同じです。
ただし、すでにApp StoreでXcode4 を購入済みの場合は、「無料アップデート」です。
なお、登録アップルデベロッパの方は、まだXcode3はダウンロードできるという情報があります。ただし、筆者は「iOS Developer Program」なので、ログインするとそれ用の画面になってしまいます。そのため大変申し訳ありませんが、これを検証できません。


しかし、購入の方法も含め、

Xcode4情報を掲載しました。

今後も、大きな変化があった場合、本ページで報告します。
Xcode4に寄せて

「東日本大震災」の直前にリリースされたXcode4は、筆者にとっては特別な感慨のあるソフトウェアになってしまいました。
そんなことも、別ページに掲載しています。

本書を元に、次の一歩を踏み出したい人へ

本書では、以下のようなことを詳しく説明しているうちに300ページ近く行ってしまいました。 そのため、自分で新たに書き足したソースコードはごく少量です。でも、理解と信念を持って書くことができたはずです。

「これだったら、もう少し難しいプログラムも書けそうだ、書いてみたい」と思ったのではないでしょうか?そんな人のために、「次の段階」のサンプルと説明を用意しました。上のリンクをクリックして、「次の1歩」の一覧に進んでください。


本書の補足説明

ファイルを保存できないときは
実行せず、ビルドだけしたいときにとは
ビルドの結果を確かめたいときは
アクセサ・メソッドとは

ファイルを保存できないときは

Xcodeでは、編集したまま保存していないファイルのアイコンは灰色に塗りつぶされて表示されます。これを保存しようとして困ったことはありませんか。 このちょっとしたトラブルは、実は、保存したいファイルの編集画面がマウスなどで選択されていないことによります。Xcodeの「グループとファイル」など他の部分でアイコンを選択していても、編集画面を直接選択しないとダメなときが案外あるのです。

実行せず、ビルドだけしたいときには

コンパイルエラーが出ないかどうか確かめたいが、実行するまでもない。そんなときは、「ビルド」だけをして終わることができます。
それには、Xcodeのメニューバーの「ビルド」メニューを開きます。そこから「ビルド」という項目を選べば、ビルドだけが行われます。プロジェクトウィンドウの下側のステータスバーに「問題なく完了しました」と出れば成功です。
プログラムで指定したプロパティがインターフェイス・ビルダーの一覧に現れないときは、一度全体をビルドすると反映されることがあります。この方法で試してみてください。

実行せず、ビルドだけしたいときには

コンパイルエラーや警告などが出たときは、上記と同じ「ビルド」メニューから「ビルド結果」を選べば、別のウィンドウが立ち上がって、結果を詳しく表示してくれます。

アクセサ・メソッドとは

「メンバ変数の中で、@property宣言と@synthesize文でアクセサ・メソッドを作成するもの、それがプロパティ」と本書では説明しました。そして、アクセサ・メソッドについては、説明を省略しました。
ここを、もう少しちゃんと説明しましょう。


アクセサ・メソッドは、オブジェクト指向プログラミングにはよく出てくる考え方です。
オブジェクト指向プログラミングは、「簡単なキマリを持つクラスのオブジェクトを使って、より複雑なキマリのクラスを作る」という作業の繰り返しです。
「他のオブジェクトを使う」は正確には「オブジェクトの持っている値や動作(メソッド)を使う」ということになります。
というと、「値を使うの?動作を使うの?」という迷いが出てきます。これはよくありません。
プログラミングでは、あることをするための方法は少ないほうがいいのです。あとで何かを変更したときに、それに関わるすべての方法を変更しなければならなくなるのはめんどくさいからです。
そこで、極端な例ですが、「他のオブジェクトを使うときは、メソッドだけを使う」と決めてしまえばラクになります。値を使いたいときはどうするかというと、そのオブジェクトが「自分の値を使わせる」メソッドを持っていればいいわけです。「持たせる」には、そのオブジェクトの元になっているクラスで、そういうメソッドを定義すればいいわけです。
これが、アクセサ・メソッドです。
アクセサ・メソッドを使うと、こんなこともラクになります...ある値を読み取り専用にしたいとします。値を直接使おうとすると、「読み取り専用ってどう指定するのョ?」と考えてしまいますね。そこで、値を直接使うことは原則禁止にします。そして、「読み取らせるメソッド」だけを作っておけばいいんです。読み取りも変更も許可するならば、「値を変更するメソッド」も作ってやります。


そのアクセサメソッド、書き方は簡単です。
特定のプログラミング文法にしないで、書いてみます。読み取りメソッドなら

メソッド名{
	戻り値はその値
}

変更メソッドなら
メソッド名、引数{
	元の値を引数の値に変更
}


簡単ですね。でも、これを値のひとつひとつについてやらなければなりません。メソッドはクラスに定義しますから、クラスの中でアクセス・メソッドを持たせたい変数のひとつひとつについて、メソッド名を変えて、引数名もまぁ区別をつけるために変えて、その他の部分は共通したことをチマチマと書くのです。
そこで、@property(ヘッダファイルに記述)と@synthesize(実装ファイルに記述)で自動作成してもらうのです。ただし、なぜヘッダ・ファイルと実装ファイルに分けて書くのか、そこまでは筆者にもわかりません。