- 2009-01-14 (水) 22:04
- iPhone SDK / Cocoa / Objective-C
実際に使うかどうかはともかくとして、開発者たるもの好奇心と探究心を大切にしなければなりません。というわけで、非公開APIの使い方です(といっても特に難しいことはないのですが)。
1. 使用するAPIの見当をつける
まずは、非公開APIのリストがなくては始まりません。後述するように簡単に自作することもできるのですが、Erica Sadun 女史のサイトに分かりやすくまとまっていますのでこちらを参照するとよいのではないでしょうか。
ericasadun.com (Site Highlights → 2.2 Framework Documentation)
Cocoaのくどい(?)メソッド名のおかげで、地道に調べていけばお望みの機能の実装方法の見当をつけることはそれほど難しくないかと思います。
2. フレームワークを読み込む
使用したいクラスが決まったら、そのクラスが含まれるフレームワークを読み込みます。/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/System/Library/PrivateFrameworks 以下にありますね。
3. ヘッダファイルを用意する
続いて、必要なヘッダファイルを用意します。上記のサイトから地道にコピーしてきても良いのですが、行番号が入ってしまっているため面倒です。ここで活躍するのが、各種バイナリファイルから含まれるクラスのヘッダファイルを生成してくれる class-dump-x です。
しかし、今確認してみたところオフィシャルサイトのサーバーに接続できない状態のようです。ファイル自体はこのあたりから取得できそうな感じですが(試していません)、何かあったのでしょうか…。(追記@2009.1.16)無事復活していました。
とにかく、無事アプリケーションファイルを入手できたら、/usr/local/bin あたりのパスが通ったディレクトリに配置して、
> class-dump-x AddressBookUI.framework/AddressBookUI
といったようにすると、AddressBookUIフレームワークに含まれるクラスのヘッダファイルに相当するソースコードがずらずらと表示されます。クラスを限定したい場合には、
> class-dump-x AddressBookUI.framework/AddressBookUI -C [クラス名の正規表現]
こんな感じです。-H オプションをつければ、ヘッダファイルとして吐き出してくれるのでさらに便利です。ちなみに、カテゴリに対しては(クラス名にはヒットせず)カテゴリ名のみが検索対象のようです。
なお、必要なヘッダファイルで使用されているクラスのヘッダファイルも作成して、とやっているとキリがありませんので、直接使用しないクラスは @class で逃げておくとよいでしょう。
4. がんばって試行錯誤する
ここまでくれば、後はあーでもないこーでもないと試行錯誤するだけです。一応お約束なので書いておきますが、ご利用はくれぐれも自己責任でどうぞ。
ちなみに、英語では「undocumented API」と呼ぶのが一般的なようです。
関連する投稿
- Newer: CocoaでURLエンコード
- Older: Provisioning Profile を更新したらビルドエラー
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://iphone-dev.ensites.net/archives/571/trackback
- Listed below are links to weblogs that reference
- 非公開APIの使い方 from iPhoneアプリ開発ブログ