はじめてのObjective-C サポートページ

2012年4月18日更新

第6章p277〜p298上段まで Xcode 4.3.2 で作成するための図と簡単な説明文の追加をはじめました

2011年6月14日更新

書籍を Xcode 4 に対応させたサポートページをはじめることにしました。

Xcode 4 サポートページ

2011年1月4日更新

 このサポートページを作成するにあたり、「Mac OS X Cocoa プログラミング (アーロン・ヒレガス原著)」の翻訳者である村上雅章氏にアドバイスを頂きました。大変ありがとうございます。感謝の気持ちで一杯です。
 なお、村上氏はプログラミング言語についての多数の著書と翻訳を手がけられており、現在は、海外においてプログラマーとして活躍されています。

 なお、このサポートページは、これで完成ではありません。今後も随時サポートを続けていきたいと思います。

このサポートページの構成

 このサポートページは次の項目で構成されています。

  • 正誤表
    通常、正誤表は、校正時に見落とした誤字や脱字、編集時の誤植などを訂正するものですが、ここではそれ以外にも、もう少し踏み込んだ点についても扱っています。
  • 補足説明
    ここでは、書籍で説明しきれなかったことや、書籍では説明不足だと思う点。および Mac OS X や Xcode のバージョンアップに伴って現れてくる問題点について扱おうと思っています。
  • サンプルコードのダウンロード
    文字通り書籍で登場してきたサンプルプログラムのコードファイルやプロジェクトをダウンロードできます。
  • 更新履歴

正誤表

ページ備考
 p21また、翻訳する作業ことを「コンパイル」と言いますまた、翻訳する作業ことを「コンパイル」と言います
 p21「UNIXファイル・システム」というアーキテクチャ…「UNIX」というアーキテクチャ…
 p40すべてのGUIが、バイト・データとして格納…すべてのGUIが、バイナリ・データとして格納…
 p68C言語に「smalltalk」のオブジェクト指向…C言語に「Smalltalk」のオブジェクト指向…註1
 p84意外なことにプレーン(飾り気のない)Objective-C…意外なことにプレーン(飾り気のない)Objective-C…
 p90-128」を表していることになります。-1」を表していることになります。註2
 p91「アドレス」(先頭からのビット番号)「アドレス」(先頭からのバイト番号)
 p9364ビットコンピュータの場合は、ポインタ型が使うメモリ領域は、64ビット(8バイト)になります。註3
 p95変数を最初に用意しておく必要になります。変数を最初に用意しておく必要があります。
 p103「値渡し」は日本語での造語ではなく、「pass by value」というコンピュータ科学用語の直訳になります註4
 p121・すべてのオブエジェクト指向プログラミングに…・すべてのオブジェクト指向プログラミングに…
 p144ページ下部の「Skype5」という透かし文字は、「Objective-C」という透かし文字の間違いです。
 p145「上書き」(over ride)「上書き」(override)
 p156アクサセ・メソッドの実装アクセサ・メソッドの実装
 p188また、「@syntesize」の場合にはまた、「@synthesize」の場合には
 p249Bake  → 前へBack  → 前へ
註1
 Smalltalkの開発者の一人であるアラン・ケイ氏は、[s]でも[S]でもどちらでも良いと言っているらしいです。しかし[i]で始まるアップルの一連のブランド名は別として、一般的に欧米圏で固有名詞を小文字で始めることは違和感のあることみたいです。
註2
 各ビットの「1」は人間の感覚では「2」を表しています。つまり「2の7乗(7ビット)」で「128」となり、それにマイナスがつくので「-128」になるとうっかりと思いがちです (そういう私もその一人です)。しかし、実際には「-1」になります。このことは次のように3段階で考えると理解して頂けると思います。
  1. signed 型修飾子が付いた時点で、その char型の最初のビットはプラスかマイナスかを表すためだけ使われることが決定される
  2. 残る7ビットで、そのchar型の絶対値(プラスマイナスに関係なく0からどれだけ離れているかを表す数値)を表します。つまり7ビットすべてが1である場合は7ビットで表せる値の最大値になります
  3. そして、signed charのマイナス符号の最大値は「-1」となります。逆に最小値(7ビットすべてが0)の場合、signed charでは「-128」になります
 なお、この説明でもまだ難しいかもしれません。しかし、p89からp90で一番理解してもらいたいことは、「同じ値であるはずのものでも型指定が違えば、その値は変わってしまう」ということです。この点さえ理解できていれば、後は良しとしたいと思います。
註3
 64ビットコンピュータあるいは32ビットコンピュータという言葉は良く聞くと思います。コンピュータは整数の四則演算 (足す、引く、かける、割る) を得意としています。そして、32ビットの整数を扱うことを主目的に設計されているコンピュータを32ビットコンピュータ、64ビットの整数を扱うことを主目的として設計されているコンピュータを64ビットコンピュータと呼びます。
 32ビットコンピュータでは、約42億の選択肢の中から1ステップで任意の数値を選択することができます。そして64ビットコンピュータでは、約1800京の選択肢の中から1ステップで任意の数値を選択することができます (京は兆の1万倍になります) 。もし、32ビットコンピュータで1800京の選択肢の中から任意の数値を選択しようとすれば2ステップかかることになります。つまり64ビットコンピュータのほうが処理が速いということになります。現在は、この32ビットコンピュータから64ビットコンピュータへの移行期になっています。
註4
 村上氏に教えてもらいました。「参照渡し」には「pass by reference」という原語があるらしいです。
 しかし、私が英語の文献を読み始めた頃には、すでに登場してきていませんでした。恐らく「参照渡し」が、当たり前になってきていたからでしょう。それよりも「pass copy」という文字を見た時には、「アメリカのプログラミング教育は、こんなに進んでいるのか」と、かなり驚きました。
このページの最初に戻る

補足説明

p17「ドキュメント」

 "ドキュメントをアップデートするには「取得」ボタンをクリックしてください" と書いていますが、ほとんどの場合、次の3つのドキュメントはDocumentationタブを開くと同時に自動的にアップデートが始まります。もし、自動的にアップデートが始まらない場合は「取得」ボタンをクリックしてください。
  • iOS 4.1 Core Library
  • Mac OS X 10.6 Core Library
  • Xcode 3.2 Developer Tools Library

p299「NSValuTransformer」AddOne.m

 3つ目のメソッド「transformedValue:」でNSMutableArrayの要素番号をint型で受けています。このことについての説明はp300で行っていますが、Xcode 3.2.5を使った場合のあるケースではint型で値を受けても問題は解決しません。このあるケースについては、書籍やサイトで公開できない部類に属することかもしれないので説明はしませんが、次のような解決策を提示したいと思います。
太字箇所が追加するコードになります。
- (NSNumber *)transformedValue:(NSNumber *)value
{
    int num = [value intValue];
    num += 1;
    if (num < 0) {
    	num = 0;
    }
    return [NSNumber numberWithInt:num];
}
ここで追加した if文の内容については、すでにご理解できるものとして、説明は省略させて頂きます。
このページの最初に戻る

サンプルコード ダウンロード

下記の「Download」ボタンをクリックしてください。書籍に掲載しているサンプルコードとサンプルプロジェクトをダウンロードできます。

このページの最初に戻る

更新履歴

2011/01/04 「更新履歴」の掲載を始めました。
2011/01/03 「正誤表」を掲載しました。
2011/12/26 「補足説明」を掲載しました。
2011/12/18 サンプルコードのダウンロードを始めました。

このページの最初に戻る




Copyright 2006 - 2011 viva Cocoa. All Rights Reserved.