Jonathan Zdziarski著 近藤誠監訳 武舎広幸+武舎るみ訳   iPhone SDK アプリケーション開発ガイド

正誤表

下記の誤りなどが見つかりました。お手数ですがご変更ください。

  • 重要な訂正は背景に色が付いております
  • 例題などがうまく動かない場合は、付録2 デバッグの参考もご覧ください。
  • 原著者が画像を削除してしまった例があり、それらについてはこのサポートページに画像をおくようにしていますので、ソース中のURLを変更してください。現在、対応中ですので、すべての画像は準備できていませんが、しばらくお待ちください。
  • この本はiPhone SDK のバージョン3の時点で作成したものであるため、XcodeやInterface Builderの図やウィンドウのタイトルなどが一部変わっているものがあります。できる限り変更点をお知らせしていくつもりですが、画面と多少の違いがあっても同じように動く場合がほとんどですので、不都合が生じない限り先に進まれることをお勧めします。もし、うまく行かない場合は、ご連絡用ページからご連絡ください。
  • お気づきの点はご連絡用ページからお知らせいただけると幸いです。ご連絡いただいた方、ありがとうございます。 必ずお返事を差し上げますが、しばらくお時間をいただく場合がありますので、あらかじめご了承ください。1週間以上立っても音沙汰がない場合は、不着の可能性がございますので、再度お送りください(ご連絡用ページに記載のメールアドレスまでメールでお送りください)。
  • 調査に時間がかかる場合など、解答(正解)をお答えできない場合がありますので、悪しからずご了承ください。
行等 変更前 変更後 公開日
(月日年)
5刷
まで
75 下から11行目
      NSString *pageData = [NSString stringWithContentsOfURL:url];
       ↓
      NSError *error;
      NSString *pageData =
        [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
      
NSStringのメソッドstringWithContentsOfURL:は廃止予定(deprecated)となりました。そのままでも動きますが、 stringWithContentsOfFile:encoding:error: あるいは stringWithContentsOfFile:usedEncoding:error: を使う方がよいでしょう(文字コードを指定してページを読むか、あるいは読み込んだページのコードを返してもらいます)。詳しくはAppleのドキュメントをご覧ください。 7/8
/2010

4刷
まで
371 下から2行目 下から2行目から、次のページの7行目までを削除してください。その下の内容と重複してしまっています。
6/13
/2010
4刷
まで
149 下から8行目と
14行目
   http://www.zdziarski.com/demo/
      ↓
   http://www.marlin-arms.com/support/ipsdk/images/touchdemo/
 
原著者が画像を削除してしまいましたので、このサポートページに画像をおきました。URLを変更してください。 7/6
/2010
4刷
まで
354 19行目と
22行目
4刷
まで
287 5行目と
8行目
5/11
/2010
4刷
まで
198 下から7 sizeof(buffer) -; recv_len); sizeof(buffer) - recv_len); 余分な「;」が入ってしまいました。 4/21
/2010

3刷
まで
138 3行目
   NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:
   @"http://www.zdziarski.com/demo/%d.png", i+1]]; 
      ↓
   NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:
   @"http://www.marlin-arms.com/support/ipsdk/images/touchdemo/%d.png", i+1]]; 
 
原著者が画像を削除してしまいましたので、このサポートページに画像をおきました。URLを変更してください。 4/8
/2010
3刷
まで
180 コードの下7行目 非常に歌劇なので 非常に過激なので 2/12
/2010
3刷
まで
141 下から10 ポスター版 ポスター板 1/6
/2010
3刷
まで
81 下から5 丈夫に 上部に 1/6
/2010

2刷
まで
203 4 4行目の「/* サーバソケット */ 」から、下から6行目の「/* 接続を待つのではなく、独自の処理を続ける */」までを削除してください。 修正する前のコードと修正したコードの両方を重複して載せてしまいました。 12/3
/2009
2刷
まで
205 下7 「7.1.6 発展課題」の上に、以下を追加してください。
クライアント側のコードを独自に書くとすると、たとえば次のようになります。
	static char joke[] = "Why did the chicken cross the road?\n";
	CFSocketRef client;
	CFSocketContext CTX = {0, joke, NULL, NULL, NULL};
	client = CFSocketCreate(kCFAllocatorDefault,
	   PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketDataCallBack,
	   DataCallBack, &CTX);
	CFRunLoopSourceRef sourceRef = CFSocketCreateRunLoopSource(kCFAllocatorDefault, client, 0);
	CFRunLoopAddSource(CFRunLoopGetCurrent(), sourceRef, kCFRunLoopCommonModes);
	CFRelease(sourceRef);

	struct sockaddr_in addr;
	memset(&addr, 0, sizeof(addr));
	addr.sin_len = sizeof(addr);
	addr.sin_family = AF_INET;
	addr.sin_port = htons(PORT); //サーバーのポートを入力
	addr.sin_addr.s_addr = inet_addr(ADDR); //サーバー側のIPアドレスを入力
	NSData *address = [NSData dataWithBytes:&addr length:sizeof(addr)];
	CFSocketError error = CFSocketConnectToAddress(client,
	                          (CFDataRef)address, 2);
	if (!error) {
		NSData *sendData = [NSData dataWithBytes:joke length:strlen(joke)];
		CFSocketSendData(client, address, sendData, 10);
	}


static void DataCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDataRef address,
						   const void *data, void *info) {
	NSLog([[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
	return;
}
  12/3
/2009
2刷
まで
xx 下9 3.2.5 ビューコントローラ 3.2.5 UIViewからの派生  
2刷
まで
56 1
2刷
まで
170 6 <引数inCallbackRunLoopの説明がありません> inCallbackRunLoop
inCallbackProcによってコールバック関数が指しているイベントループ。NULLを指定するとオーディオキューの内部スレッドのひとつに対して呼ばれます。
inCallbackRunLoopの説明が抜けてしまいました。 12/4
/2009

1刷 170 12 outAO outAQ 「O」ではなく「Q」です。 9/28
/2009
87 5 <変更前>
#import <UIKit/UIKit.h>
#import "RootViewController.h"

@interface PageDemoAppDelegate : NSObject  {
	UIWindow *window;
	RootViewController *viewController;
	CreditsViewController *creditsViewController;
	UINavigationController *navigationController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootViewController *viewController;
@property (nonatomic, retain) IBOutlet CreditsViewController *creditsViewController;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

@end
RootViewController.hのソースを載せるべきところにPageDemoAppDelegate.hを載せてしまいました。 9/13
/2009
<変更後>
#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController {
	UITextView *textView;
	UIBarButtonItem *credits;
	int page;
	UISegmentedControl *segmentedControl;
	UINavigationController *navigationController;
}
- (void)setPage;
- (id)initWithAppDelegate:(id)appDelegate;
@end
@interface CreditsViewController : UIViewController {
	UITextView *textView;
	UINavigationController *navigationController;
}
- (id)initWithAppDelegate:(id)appDelegate;
@end

マーリンアームズ(武舎広幸・武舎るみ 他)の訳書・著書のご紹介