■Objective-C逆引きハンドブック

【その1】(初版・2刷のみ)

対象となる章

本書について

対象となるページ

P.4●開発環境について

Mac OSやiPhone SDKのバージョンアップに伴い、次の環境でも動作の検証を行いました。
・Mac OS X 10.6.4
・Xcode 3.2.3
・iPhone SDK 4.0
・iOS 4.0

なお、変更点の詳細については、下記を参照してください。また、iOS SDK 4.1およびiOS4.1への対応については、【その13】以降をご確認ください。iOS SDK 4.2およびiOS4.2への対応については【その21】をご確認ください。

【その2】(初版・2刷のみ)

対象となる章

CHAPTER 02 Objctive-Cの文法

対象となるページ

P.112●例外処理について

P.113の実行結果は、iOS 4.0では次のように表示されます。

---
2010-07-16 00:41:22.289 ObjCTest[3476:307] Name : NSRangeException
2010-07-16 00:41:22.297 ObjCTest[3476:307] Reason : *** -[NSArray objectAtIndex:]: index 4 beyond bounds [0 .. 2]
2010-07-16 00:41:22.301 ObjCTest[3476:307] UserInfo: (null)
---

【その3】(初版・2刷のみ)

対象となる章

CHAPTER 02 Objctive-Cの文法

対象となるページ

P.116●ブロック構文について

iOS 4.0からはブロック構文を使用できるようになりました。 

【その4】(初版・2刷のみ)

対象となる章

CHAPTER 02 Objctive-Cの文法

対象となるページ

P.119◆COLUMN Grand Central Dispatch (GCD)とブロック

iOS 4.0からGCDがサポートされました。

【その5】(初版・2刷のみ)

対象となる章

CHAPTER 05 コレクション

対象となるページ

P.287●配列から叙述コードを記述してオブジェクトを検索する

このコードはiOS 4.0以降でも実行できるようになりました。

【その6】(初版・2刷のみ)

対象となる章

CHAPTER 05 コレクション

対象となるページ

P.290◆COLUMN Mac OS X 10.6以外ではオブジェクトを順番に取得して評価する

iOS 4.0からブロック構文が使用できるようになりましたので、
「Mac OS 10.6以外では」の記述は「Mac OS 10.6およびiOS 4.0以外では」となります。

【その7】(初版・2刷のみ)

対象となる章

CHAPTER 05 コレクション

対象となるページ

P.306●ブロックを使って配列をソートする

このコードはiOS 4.0以降でも実行できるようになりました。

【その8】(初版・2刷のみ)

対象となる章

CHAPTER 07 データ

対象となるページ

P.393●外部メモリブロックを使用したデータを作成する

P.394のCOLUMNのコードをiPhoneおよび32ビット版で実行すると、次のように表示されます。

---
2010-07-16 01:48:25.518 ObjCTest[5115:307] <2010cdab>
---

【その9】(初版・2刷のみ)

対象となる章

CHAPTER 09 ファイルシステムと入出力ファイル

対象となるページ

P.543●アーカイブされたデータから独自のクラスのインスタンスを作成する

iOS 4.0に対応するため、「MyObject.m」のコードの「description」メソッドのコードを次のように変更してください。

----
- (NSString *)description
{
    unsigned int u1 = (unsigned int)self;
    unsigned int u2 = (unsigned int)_parent;
    
    return [NSString stringWithFormat:
            @"0x%X, intValue=%d, str=%@, parent=0x%08X",
            u1,
            _intValue,
            _str,
            u2];
}
----

【その10】(初版・2刷のみ)

対象となる章

CHAPTER 12 スレッドとタイマーと通知

対象となるページ

P.654●ブロックをキューに登録して実行する

このコードはiOS 4.0以降でも実行できるようになりました。

【その11】(初版・2刷のみ)

対象となる章

APPENDIX

対象となるページ

P.782●UIKitを使ったiPhone用アプリケーションの開発

iPhone SDK 4.0では、次の点が異なっています。

・P.782 ○プロジェクトの作成
操作(3)で、「Product」から「iPhone」を選択する操作が追加になります。

・P.784 ○「MainWindow.xib」の編集
iPhone SDK 4.0では、操作(2)は必要ありません(初期状態でNibファイルから読み込まれる設定のため、削除するオブジェクトが配置されていません)。

【その12】

対象となる章

APPENDIX

対象となるページ

P.782●UIKitを使ったiPhone用アプリケーションの開発

iPhone SDK 4.0では、P.784 の「MainWindow.xib」の編集で、操作(1)を行ってもビューの編集画面が表示されない場合があります。その場合は、次のように操作してください。

(1) 「Tab Bar Controller」をダブルクリックしてもビューの編集画面が表示されないことを確認します。
(2) 「File」メニューから「Save」コマンドを選択して、ファイルを保存します。
(3) そのまま、Interface Builderを終了します。
(4) 再度、「MainWindow.xib」をダブルクリックして、Interface Builderを起動します。
(5) 「Tab Bar Controller」をダブルクリックします。

なお、(4)の後にビューの編集画面が表示される場合は、(5)の操作は必要ありません。また、ビューの編集画面が表示されるのは、画面の右上になります。「Inspector」ウィンドウが表示されていると、「Inspector」ウィンドウの後ろに表示されるので、ご注意ください。

【その13】(初版・2刷・3刷・4刷のみ)

対象となる章

本書について

対象となるページ

P.4●開発環境について

iOSやSDKのバージョンアップに伴い、次の環境でも動作の検証を行いました。

・iOS SDK 4.1
・iOS4.1

【その1】での環境と合わせ、上記の環境でも問題なく動作することを確認しています。なお、iOS4.1では、表示結果が一部、異なります。詳細については【その14】〜【その19】を参照してください。

【その14】(iOS4.1/4.2.1での表示結果について)

対象となる章

CHAPTER 05 コレクション

対象となるページ

P.344およびP.345のCOLUMN

iOS4.1では、表示される順番が異なります。

【その15】(iOS4.1/4.2.1での表示結果について)

対象となる章

CHAPTER 08 日付と時刻

対象となるページ

P.437●現在日時のオブジェクトを取得する

iOS4.1では、実行結果のタイムゾーンがGMTで表示されます。

【その16】(iOS4.1/4.2.1での表示結果について)

対象となる章

CHAPTER 08 日付と時刻

対象となるページ

P.439、P.441、 P.442、 P.453、 P.455

iOS4.1では、実行結果がGMTで表示されます。

【その17】(iOS4.1/4.2.1での表示結果について)

対象となる章

CHAPTER 09 ファイルシステムと入出力

対象となるページ

P.500●バンドル内のリソースファイルの一覧を取得する

iOS4.1では、表示されるファイルの内容が異なります。

【その18】(iOS4.1/4.2.1での表示結果について)

対象となる章

CHAPTER 11 クラスとセレクタ

対象となるページ

P.616●遅延でメソッドを呼び出す

iOS4.1では、実行結果がGMTで表示されます。

【その19】(iOS4.1/4.2.1での表示結果について)

対象となる章

CHAPTER 12 スレッドとタイマーと通知

対象となるページ

P.626●ランループを実行する

iOS4.1では、実行結果がGMTで表示されます。

【その20】(初版・2刷・3刷・4刷のみ)

対象となる章

本書について

対象となるページ

P.4●開発環境について

Mac OSやiPhone SDKのバージョンアップに伴い、次の環境でも動作の検証を行いました。
・Mac OS X 10.6.5
・Xcode 3.2.5
・iOS SDK 4.2
・iOS 4.2.1

【その1】【その13】での環境と合わせ、上記の環境でも問題なく動作することを確認しています。なお、iOS4.2.1では、表示結果が一部、異なります。詳細については【その14】〜【その19】を参照してください。

【その21】(初版・2刷・3刷・4刷・5刷のみ)

対象となる章

CHAPTER 02 Objective-Cの文法

対象となるページ

P.68●変数について

「有効範囲」についてですが、誤解を与えてしまう可能性のある記述でした。お詫びして訂正させていただきます。


★有効範囲
 変数が宣言された場所によって、使用できる範囲が決まります。使用できる範囲は、変数が宣言されたスコープ内です。スコープは、「{」で始まり、「}」で閉じられる範囲です。
====

int x;

{
    // ここでは変数「y」はまだ宣言されていないため使用できない
    int y;
    // ここでは変数「x」と変数「y」を使用できる
}
// ここでは変数「y」はスコープの外側のため、使用できない
// 変数「x」は使用できる
====


★有効範囲(スコープ)
 変数は宣言された場所によって使用できる範囲が決まっています。使用できる範囲をスコープと呼び、「{」で始まり、「}」で閉じられる範囲をブロックスコープと呼びます。ブロックスコープ内で宣言された変数は、そのブロックスコープ内でのみ使用できます。関数やメソッドも一つのブロックスコープと見なすことができます。また、関数やメソッドの外側で宣言された変数は、宣言されたソースファイル内のどこからも使用できます。
====

int x;
{
    // ここでは変数「y」はまだ宣言されていないため使用できない
    int y;
    // ここでは変数「x」と変数「y」を使用できる
}
// ここでは変数「y」は範囲外のため使用できない。変数「x」は使用できる
====

【その22】(初版・2刷・3刷・4刷・5刷のみ)

対象となる章

CHAPTER 08 日付と時刻

対象となるページ

P.437●現在日時のオブジェクトを取得する

サンプルコードの6行目(空白行も含む)に誤りがありました。お詫びして訂正させていただきます。


====

NSData *date = [NSDate date];  //現在の日時を取得する
====

正(変数の型を「NSData」から「NSDate」に変更)
====

NSDate *date = [NSDate date];  //現在の日時を取得する
====

なお、サンプルの実行結果には影響はありませんが、2010年12月28日14時ごろに修正したサンプルを再アップロードしてあります。それ以前にサンプルをダウンロードされた方はお手数をおかけしますが、再度、ダウンロードをお願いいたします。

【その23】(初版・2刷・3刷・4刷・5刷のみ)

対象となる章

APPENDIX アプリケーション開発の実践

対象となるページ

P.812●UIKitを使ったiPhone用アプリケーションの開発

テンプレートから生成される「MainWindow.xib」ファイルの設定が変わったことにより、ウインドウが表示されないようになってしまいました。このページのコードの上から14行目〜17行目を、次のように変更してください。


====

- (void)applicationDidFinishLaunching:(UIApplication *)application
{    
    [window addSubview:tabBarController.view];
}
====

正((「[window makeKeyAndVisible];」を追加してください)
====

- (void)applicationDidFinishLaunching:(UIApplication *)application
{    
    [window addSubview:tabBarController.view];
    [window makeKeyAndVisible];    // この行を追加する
}
====

 


前のページへ