iPhone SDK をアップデート。Xcode のバージョンは変わらず(3.1.2のまま)。かかった時間はやはり10分ほど。
![]() |
| 送信者 iPhoneをプログラミング |
iPhone SDK をアップデート。Xcode のバージョンは変わらず(3.1.2のまま)。かかった時間はやはり10分ほど。
![]() |
| 送信者 iPhoneをプログラミング |
ちょっと手間取ったけど、どうにか iPhone Developer Program のアクティベーションにまでこぎつけた。ADC の iPhone DevCenter で Program Portal に行くボタンが表示されるようになった。
![]() |
| 送信者 iPhoneをプログラミング |
何をどう手間取ったかは、そのうち書こう。
何度も言及しているので、目次だけでも参照できるように書き込んでおく。
ヒレガス本を読んでいた。ちょっと気になることがあって ADC Documents の中の "Cocoa Fundamentals Guide" を開いた。そこで、"zone" という言葉に出会う。「ああ、そう言えば "allocWithZone" とか見たことあるな。ゾーンって何(・ω・)?」と思ったので、荻原(2.0)本を開いた。「CHAPTER 13. オブジェクトのコピーと保存」の最初にゾーンの解説が載っている。軽く引用してみる:
(p.304)
Cocoa では、動的に確保されるメモリの管理をゾーン(zone)と呼ばれる領域を使って行います。(・・・中略・・・) メモリ空間にいくつかのヒープを設けて、関係の深いデータやオブジェクトは特定のヒープからメモリが割り当てられるようにします。このようにすると、空間的な局所参照性を生かした効率的なメモリアクセスを実現できると期待されます。
ページフォールトを避けたい、ってこと何だろうねえ。何というか、C の時代に戻ったような気がするよ。と思いつつ先を読み進むと・・・
(p.305)
Apple社のドキュメントでは、通常はデフォルトゾーンだけの利用で十分な実行効率が得られるとされており、(・・・中略・・・) さらに、ガーベジコレクションを利用した場合には、オブジェクトを生成する時にゾーンを指定することができません。
ええええ??
しょうがない、英語と格闘するか。と ADC Documents にもどって、ゾーンに関する記述を探した。荻原(2.0)本には "Objective-C 2.0 Runtime Reference"、"Memory Management Programming Guide for Cocoa" の名前が挙がっている。
"Memory Management Programming Guide for Cocoa" にこう書いてあった。
Zones are page-aligned areas of memory that hold the objects and data allocated by an application. (・・・中略・・・) In most circumstances, using the default zone is faster and more efficient than creating a separate zone.
(・・・中略・・・) For example, allocating a group of related objects in the same zone co-locates those objects in the same area of memory. If a page fault occurs when trying to access one of the objects, loading the page brings in all of the related objects, which could significantly reduce the number of future page faults.
たいていはデフォルト(ランタイムシステムが自動的に割り当てるゾーン)だけで十分だ。一方で、独立したゾーンを使うと、メモリのフットプリントが大きくなる代わりに、ページフォールトが減らせるかもよ、とも書いてある。
"Garbage Collection Programming Guide" では、つぎの一文を発見。
You cannot allocate objects in separate zones—all Cocoa objects must be allocated in a single managed heap. If your application is running in garbage collection mode, the zone parameter in NSAllocateObject is ignored.
GCが有効だと、ゾーンを指定しても無視される、と。
まとめてみよう・・・。Mac で、それも Leopard 以降だけをプラットフォームとするなら、GC を使えるし、使いたいだろう。その場合、ゾーンのことは忘れて OK。けど、iPhone OS では GC は使えない。しかもメモリやパフォーマンスはシビアなプラットフォームだから、ゾーンを使ったプログラミングが関係してくるかもしれない。
今日、Amazon から届いた。
表紙の輪切りフルーツは何? 裏表紙を見ると関連するタイトルで同様の柑橘系フルーツの輪切り写真が使われていて、レモン、ライム、オレンジのように見える。とすると、この iPhone のやつは・・・。
それはさておき、まずは目次。
MacBookの方の Xcode、っていうか iPhone SDK をアップデート。iPhone OS 2.2 対応のもの。Xcode は 3.1.2。インストールにかかった時間は約10分。
![]() |
| 送信者 iPhoneをプログラミング |