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

Mac App StoreからXcode4を購入
変更点(1)プロジェクトの操作
変更点(2)エディタとインターフェイスビルダー
変更点(4)アプリのアイコンと日本語化ファイル


トップページへ

Xcode4、本書の実践において必要な変更点(3)自動作成されるソースコード

このページは、Xcode3を用いて解説してある本書の内容をXcode4で実践するための、最低限の変更点を解説したものです。本ページでは、Xcodeにより自動作成されるソースコードが本書解説の内容からどう変わったか説明します。
なお、このページは2011年4月末に追加されました。


「Xcode4」に必然でついてくる「iOS4.3」の変更点です

「ソースコードの変更点」とは、実は「Xcode4」の変更点というよりは、Xcodeをインストールすると必然的にインストールされる「iOS SDK の変更点です。
「SDK」は「iOS」の仕様に従って異なる仕事(自動記入など)をしますから、以下に述べますのは「iOS4.3用のプログラミングにおける変更点」ということになります。これは、「Xcode4を用いることによって、必然的になされるソースコードの変更点」です。

自動記入された「FirstAppAppDelegate.h」の内容(第7章第7-3節)

コードが少なくなった

iOS4.3用のプログラミングでは、リスト1の太字の部分が不要になりました。そのため、自動記入されていません。
リスト1 不要になったので自動記入されていない
@interface FirstAppAppDelegate : NSObject  {
   //ここがいらなくなった。書いてもエラーにはならない。
  UIWindow *window;
}


しかし、本書の通りでもエラーにはなりません。

自動記入された「FirstAppAppDelegate.m」の内容(第7章第7-4節)

#pragma...の記載が少なくなった

コード中に「#pragma...」で始まる記載が少なくなりました。これは126ページに述べました通り、もともとプログラムの動作には関係ない記述です。

変数名 window が _window に変更

なんと、ヘッダ・ファイル「FirstAppAppDelegate.h」で定義した変数windowの名前が、実装ファイル「FirstAppAppDelegate.m」で _window に変わっています。 これは、「FirstAppAppDelegate.m」の最初のほうに書かれた以下のようなコードによるものです。
リスト2 _windowという変数名を決めているところ
@synthesize window=_window;


リスト2の「@synthesize」とは何なのかは、第13章213ページで述べてありますが、要するにヘッダ・ファイルで定義した「プロパティ」と呼ばれる変数を、実装ファイルで使えるように、我々の知らないところでいろいろなプログラムを付加する処理です。
その処理をした後、別の名前でも呼べるようにするのがリスト2の文です。

なぜそんなことをするのでしょうか?おそらくそれは次に述べる変更点と関係があります。

プロパティwindowはself.windowに

自動記入されたリスト3の部分は、本書リスト7-14(132ページ)からの変更点です。
リスト3 「window」がself.windowになった
[self.window makeKeyAndVisible];


この「self」は「自分」すなわち、今定義しているこのクラスのオブジェクト、という意味です。
iOS4.3用のプログラミングでは、@synthesize文で処理されたプロパティを、「self.」にプロパティ名をつけて書き表すようになりました。
そして、リスト2は、「@sysnthesize文で処理された「window」プロパティを、「_window」と呼びます」と宣言しています。 ですから、「self.windowのことを_windowとも呼びます」と言っているのです。
それを確かめる方法は、リスト3をリスト4のように書いて見ることです。エラーなくビルド、起動できます。
リスト4 「self.window」を「_window」と書く
[ _window makeKeyAndVisible];


でも、本書の通りの書き方でも、まだエラーにはなりません。

「FirstViewViewViewController.h」の書き方(第12章)

本書のままでエラーにはなりません

自動記入された内容は「お手本」ですから、自分たちで書くときも、自動記入された内容に書き方を合わせるのが望ましくはあります。
でも、本書のままでもエラーにはなりません。
そこでまず、本書の通りに書いて動作を確認してから、自動記入された内容に合わせて細かいところを変更して動作を比較すると、よい勉強になるでしょう。

自動記入された「FirstViewViewController.m」の内容(第13-1節 - 第13-2節)

ほとんどは順番が違うだけ

Xcode4で自動記入された「FirstViewViewController.m」の内容と、本書のリスト13-1とは、ほとんどは記入されたメソッドの順番が異なるだけです。どこにどのメソッドが書かれているか、落ち着いて探してください。

メソッド「viewDidUnload」に内容が記入された

ひとつ明らかに異なる部分はメソッド「viewDidUnload」です。本書作成時では中身が空でしたが、iOS4.3用のプログラミングではリスト5のように最低限の中身が書かれます。
リスト5 最低限の中身が自動記入される
- (void)viewDidUnload
{
    [super viewDidUnload]; 

}
これは、「すでに決まっている処理を実行する」内容に該当します。

「FirstViewViewViewController.m」の書き方(第13-2節以降)

本書のままでエラーにはなりません

「FirstViewViewController.m」の中身は本書のままでもエラーにはなりません。
本書の通りに書いて動作を確認してから、細かいところを変更して比較すると、よい勉強になるでしょう。

iOS4.3用に書くとしたら

「細かいところの変更」とは、たとえばプロパティfieldAに関して説明しましょう。まず@synthesize文をリスト6のように書きます。
リスト6 プロパティfieldAに関する@synthesize文
@synthesize fieldA =_fieldA;


そのあと、本書のソース・コード中で「fieldA」と書いてあるところを全て「_fieldA」にします。


以上が、Xcode4におけるソースコードの主な変更点でした。


Mac App StoreからXcode4を購入
変更点(2)エディタとインターフェイス・ビルダーの操作
変更点(4)アプリのアイコンと日本語化ファイル


トップページへ