2008年7月2日水曜日

iPhone OS for Cocoa Developers

iPhone OS for Cocoa Developers
http://developer.apple.com/iphone/gettingstarted/docs/iphoneosforcocoadevelopers.action

この資料はCocoaで開発している人向けの資料です。iPhone OSの開発とCocoaの主な違いをここに列挙しています。

■ Changes to Foundation Framework
Foundationフレームワークはvalue objects、strings、collections、thread managementなどが入っているのですが、全部がiPhone OSに入っているわけではないとしています。

Table 1がその主なものと、入れなかった理由と代案の表だそうです。詳細は"Foundation Framework Reference."の"The Foundation Framework"を参照しろと書いています。

■ UIKit Versus AppKit
UIKitフレームワークはAppKitフレームワークの手法を元に書かれていますが、まったく異なるプラットフォーム向けの異なる用途を前提にしています。Cocoaのシンボル名をUIKitの近い名前に入れ替えたからと行って動くものではありません。二つのフレームワークは構造も挙動も異なるので、それに合わせて修正と書き換えをして・・・等々、当前のことが書かれています。

Table 2には違いがリストアップされています。

iPhoneではCore Animationレイヤの上に描画されているそうです。Core Animationレイヤとやり取りする時は、レイヤのツリー構造を直接制御するときやViewレベルで提供されてない機能を使う時だそうです。

概念的にはMac OS Xと同様に、iPhoneもWindowとViewは同じ構造だけど、実装は異なるようです。Mac OS XではNSWindowクラスはNSResponderのサブクラスで、iPhone OSではUIWindowクラスはUIViewのサブクラスだそうです。これはたしかビデオでも言っていたような気がします。この違いにより、UIKitのウィンドウはCore Animationレイヤを持っていて、アクセラレーションの描画ができるそうです。

Mac OS XとiPhone OSの他の違いとして、iPhone OSではウィンドウが一つだけという点があると書いています。異なる内容を描画するにはViewを変更するそうです。

ウィンドウが一つなのに、ウィンドウを設けている理由は、アラートやステータスウィンドウなどをアプリケションのウィンドウの上に置くためだそうです。

■ Changes to Other Frameworks
Table 3はiPhone OSとMac OS Xで共通になっている上記以外のフレームワークから重要な違いをリストアップしています。

■ OpenGL Notes
私がOpenGL ESを使うことはまず内のでパス(笑)

■ Coordinate Systems
Mac OS XとiPhone OSでは座標系が異なると書いています。iPhone OSでは左上が(0,0)で、右と下に向かって座標の数値が多きなくなります。

■ Memory Management
iPhone OSではmemory-managed modelでメモリの確保、解放、自動開放オブジェクトを利用し、ガベージコレクションはしていない、この点は重要ですね。初期のMS-DOSや組込を経験している人であれば当たり前ですが、WindowsやMacしか知らない人には面倒です。とはいえ、MS-DOSしか知らない人はObjective-Cは面倒(笑)

ループでautoreleaseのオブジェクトをアロケートしたときにはループ内で直接オブジェクトを解放するか、autorelease poolを生成して定期的に解放するように書いています。これをやらないとメモリ不足でiPhone OSが自動再起動(笑)と言うことですね。

0 件のコメント: