■Objective-C逆引きハンドブック
|
対象となるページ |
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】をご確認ください。
|
対象となるページ |
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)
---
|
対象となるページ |
P.116●ブロック構文について |
iOS 4.0からはブロック構文を使用できるようになりました。
|
対象となるページ |
P.119◆COLUMN Grand Central Dispatch (GCD)とブロック |
iOS 4.0からGCDがサポートされました。
|
対象となるページ |
P.287●配列から叙述コードを記述してオブジェクトを検索する |
このコードはiOS 4.0以降でも実行できるようになりました。
|
対象となるページ |
P.290◆COLUMN Mac OS X 10.6以外ではオブジェクトを順番に取得して評価する |
iOS 4.0からブロック構文が使用できるようになりましたので、
「Mac OS 10.6以外では」の記述は「Mac OS 10.6およびiOS 4.0以外では」となります。
|
対象となるページ |
P.306●ブロックを使って配列をソートする |
このコードはiOS 4.0以降でも実行できるようになりました。
|
対象となるページ |
P.393●外部メモリブロックを使用したデータを作成する |
P.394のCOLUMNのコードをiPhoneおよび32ビット版で実行すると、次のように表示されます。
---
2010-07-16 01:48:25.518 ObjCTest[5115:307] <2010cdab>
---
|
対象となるページ |
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];
}
----|
対象となるページ |
P.654●ブロックをキューに登録して実行する |
このコードはiOS 4.0以降でも実行できるようになりました。
|
対象となるページ |
P.782●UIKitを使ったiPhone用アプリケーションの開発 |
iPhone SDK 4.0では、次の点が異なっています。
・P.782 ○プロジェクトの作成
操作(3)で、「Product」から「iPhone」を選択する操作が追加になります。
・P.784 ○「MainWindow.xib」の編集
iPhone SDK 4.0では、操作(2)は必要ありません(初期状態でNibファイルから読み込まれる設定のため、削除するオブジェクトが配置されていません)。
|
対象となるページ |
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」ウィンドウの後ろに表示されるので、ご注意ください。
|
対象となるページ |
P.4●開発環境について |
iOSやSDKのバージョンアップに伴い、次の環境でも動作の検証を行いました。
・iOS SDK 4.1
・iOS4.1
【その1】での環境と合わせ、上記の環境でも問題なく動作することを確認しています。なお、iOS4.1では、表示結果が一部、異なります。詳細については【その14】〜【その19】を参照してください。
|
対象となるページ |
P.344およびP.345のCOLUMN |
iOS4.1では、表示される順番が異なります。
|
対象となるページ |
P.437●現在日時のオブジェクトを取得する |
iOS4.1では、実行結果のタイムゾーンがGMTで表示されます。
|
対象となるページ |
P.439、P.441、 P.442、 P.453、 P.455 |
iOS4.1では、実行結果がGMTで表示されます。
|
対象となるページ |
P.500●バンドル内のリソースファイルの一覧を取得する |
iOS4.1では、表示されるファイルの内容が異なります。
|
対象となるページ |
P.616●遅延でメソッドを呼び出す |
iOS4.1では、実行結果がGMTで表示されます。
|
対象となるページ |
P.626●ランループを実行する |
iOS4.1では、実行結果がGMTで表示されます。
|
対象となるページ |
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】を参照してください。
|
対象となるページ |
P.68●変数について |
「有効範囲」についてですが、誤解を与えてしまう可能性のある記述でした。お詫びして訂正させていただきます。
誤
★有効範囲
変数が宣言された場所によって、使用できる範囲が決まります。使用できる範囲は、変数が宣言されたスコープ内です。スコープは、「{」で始まり、「}」で閉じられる範囲です。
====
int x;
{
// ここでは変数「y」はまだ宣言されていないため使用できない
int y;
// ここでは変数「x」と変数「y」を使用できる
}
// ここでは変数「y」はスコープの外側のため、使用できない
// 変数「x」は使用できる
====
正
★有効範囲(スコープ)
変数は宣言された場所によって使用できる範囲が決まっています。使用できる範囲をスコープと呼び、「{」で始まり、「}」で閉じられる範囲をブロックスコープと呼びます。ブロックスコープ内で宣言された変数は、そのブロックスコープ内でのみ使用できます。関数やメソッドも一つのブロックスコープと見なすことができます。また、関数やメソッドの外側で宣言された変数は、宣言されたソースファイル内のどこからも使用できます。
====
int x;
{
// ここでは変数「y」はまだ宣言されていないため使用できない
int y;
// ここでは変数「x」と変数「y」を使用できる
}
// ここでは変数「y」は範囲外のため使用できない。変数「x」は使用できる
====
|
対象となるページ |
P.437●現在日時のオブジェクトを取得する |
サンプルコードの6行目(空白行も含む)に誤りがありました。お詫びして訂正させていただきます。
誤
====
NSData *date = [NSDate date]; //現在の日時を取得する====
正(変数の型を「NSData」から「NSDate」に変更)
====
NSDate *date = [NSDate date]; //現在の日時を取得する====
なお、サンプルの実行結果には影響はありませんが、2010年12月28日14時ごろに修正したサンプルを再アップロードしてあります。それ以前にサンプルをダウンロードされた方はお手数をおかけしますが、再度、ダウンロードをお願いいたします。
|
対象となるページ |
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]; // この行を追加する
}
====