統一された型の ID
統一された型の ID(UTI) は型を持つ実体のクラスを識別する文字列です。UTI は、典型的には、ファイルまたはメモリ内のデータ型の形式を識別し、ディレクトリ、ボリューム、またはパッケージの階層的なレイアウトを識別するために使用されます。UTI は、既存のデータの形式を宣言するか、アプリが受け付ける形式を宣言するためにも使用されます。たとえば、OS X と iPhone アプリは、ペーストボードの上に置いたデータの形式を宣言するために UTI を使用します。Mac のアプリは、彼らが開くことができるファイルの種類を宣言するのに UTI を使用します。
UTI は、他の方の識別スキームに比べていくつかの利点があります。
- UTI の命名規則は論理的で、構文はよく知られています。
- UTI は、家系図のように、階層的に関連付けることができます。
- UTI のリストは、アプリによって拡張でき、新しい型と、サブタイプを作成することができる事を意味します。
- UTI 宣言は、型を記述するメタデータを含むが、人間が読める説明を含み、UTI に関連した、MIME 型やファイル名の拡張子のような、情報を他の識別スキームへ変換する事を含んでいます。
UTI は逆ドメイン·ネーム·システム規則を使用
UTI は、逆ドメインネームシステム(DNS) の規則に従った文字列(CFString) として定義されています。トップレベルドメインは、(例えば、com) は、最初に来て、一つ以上のサブドメインが続き、実際の型を表すトークンで終わります。例えば、com.apple.application は、アプリを識別する抽象基本型です。ドメインは、ドメイン階層内の UTI の位置を識別するためだけに使用されます。それらは同じような型のいずれのグループ化をも意味するものではありません。
public ドメイン内の UTI は Apple によって定義され、一般的な形式を表すために使用されます。
dyn ドメインでの UTI は予約されています。これらは、UTI への定義の変換が存在しない別の識別スキームからの型の周りの UTI 互換のラッパーとして自動的に作成されます。
統一された型 ID は適合階層で宣言
適合階層は、オブジェクト指向プログラミングの、クラス階層に似ています。階層内の下位型のすべてのインスタンスは、また階層においても、より高い型のインスタンスです。
適合性は、それが互換性のある型の宣言でアプリの柔軟性を増します。アプリは、処理することができる型を指定し、その下にある全てのサブタイプを自動的に含みます。たとえば、HTML テキストを定義する UTI の public.html は、public.text 識別子に準拠しています。自動的にテキストファイルを開くアプリは、HTML ファイルを開きます
UTI 適合階層は多重継承をサポートしています。ほとんどの UTI は、どのようにしてその物理的性質やデータが使われるか説明し、機能的な UTI を説明する 物理的 UTI への適合性の情報を追跡できます。
UTI のプロパティは、実行時に継承されます。値が必要な場合には、階層が検索され、現在の型で始め、親の型を介して、検索されます。
OS X のアプリは、アプリバンドルでそれらを定義して新しい UTI を追加
アプリは、情報プロパティリストで UTI を宣言することにより、システムに新しい UTI を追加します。宣言は、UTI および適合階層内の位置を説明するためのメタデータを含んでいます。
アプリで宣言した UTI は、エクスポートまたはインポートできます。エクスポートされた UTI は常に、UTI の決定的な宣言を表します。これとは対照的に、インポートされた UTI は、他のアプリで再宣言されます。インポートされた宣言は便利で、別のアプリによって定義されているファイルをあなたのアプリは読めますが、そのアプリをターゲットマシンにインストールする事を要求したくない場合に、便利です。オペレーティングシステムは、インポートおよびエクスポート宣言が両方ある場合、エクスポートされた宣言が優先します。
前提条件の記事
関連記事
(なし)
既出の議論
統一された型の ID 概要
サンプルコードプロジェクト
(なし)
次の章
前の章