Core Foundation の設計思想への序文
Core Foundation は、Objective-C ベースの Foundation フレームワーク から概念的に派生したプログラミングインターフェイスセットを備えたライブラリですが、C 言語で実装されています。これを行うために、Core Foundation は C で限定されたオブジェクトモデルを実装します。Core Foundation はデータと関数をカプセル化する不透明型を定義します。以下、"オブジェクト" と呼びます。
Core Foundation オブジェクトのプログラミングインターフェイスは、使いやすく再利用できるように設計されています。一般的なレベルでは、Core Foundation は:
- さまざまなフレームワークとライブラリ間でコードとデータを共有できるようにします
- ある程度のオペレーティングシステムの独立性を可能にします
- Unicode 文字列による国際化をサポートします
- プラグイン・アーキテクチャー、XML プロパティー・リスト、およびプリファレンスを含む、共通 API およびその他の有用な機能を提供します
Core Foundation は、OS X 上のさまざまなフレームワークとライブラリがコードとデータを共有することを可能にします。アプリケーション、ライブラリ、およびフレームワークは、外部インタフェースで Core Foundation 型を組み込んだ C のルーチンを定義できます。したがって、これらのインタフェースを介して、Core Foundation オブジェクトとして、データを互いに通信することができます。
Core Foundation は、特定のサービスと Cocoa の Foundation フレームワークとの間で "通話無料でのブリッジ" も提供しています。通話無料でのブリッジを使用すると、Core Foundation オブジェクトの代わりに Cocoa オブジェクトを関数パラメータに置き換えることができ、その逆もできます。
いくつかの Core Foundation 型と関数は、異なるオペレーティングシステム上で特定の実装を持つものを抽象化したものです。これらの API を使用するコードは、このように異なるプラットフォームに移植するのを簡単にします。
日付と数字の型は抽象的な時間ユーティリティであり、絶対時間とグレゴリオ暦の時間尺度間の変換のための機能を提供します。また、数値を抽象化し、それらの値の異なる内部表現の間で変換するための機能も提供します。
Core Foundation がアプリケーション開発にもたらす主な利点の 1 つは、国際化のサポートです。Core Foundation は、その String オブジェクトを使用して、すべての OS X および Cocoa プログラミングインターフェイスと実装を通じ、簡単で堅牢で一貫した国際化を容易にします。このサポートの本質的な部分は、型や CFString であり、そのインスタンスは 16 ビットの Unicode 文字の配列を表します。CFString オブジェクトは、メガバイト相当の文字を保持するのに十分な柔軟性を持ち、文字データを通信するすべてのプログラミングインターフェイスで使用するのに十分で、単純かつ低レベルです。これは、標準 C 文字列に関連するパフォーマンスとあまり変わらないパフォーマンスでこれを実現します。
Core Foundation の基盤となる基本的な設計原理、及び Corefoundation オブジェクトが Cocoa(Touch) オブジェクトとどのように相互作用するかについては、この文書をお読みください。
この文書の構成
これらの概念とタスクでは、Core Foundation で使用されるオブジェクトモデルについて説明します。
さらに、Core Foundation を使用する前に慣れておいた方がいい他の非オブジェクト型および API の規則もあります。
次の章