統一された型の ID


統一された型の ID(UTI) は型を持つ実体のクラスを識別する文字列です。UTI は、典型的には、ファイルまたはメモリ内のデータ型の形式を識別し、ディレクトリ、ボリューム、またはパッケージの階層的なレイアウトを識別するために使用されます。UTI は、既存のデータの形式を宣言するか、アプリが受け付ける形式を宣言するためにも使用されます。たとえば、OS X と iPhone アプリは、ペーストボードの上に置いたデータの形式を宣言するために UTI を使用します。Mac のアプリは、彼らが開くことができるファイルの種類を宣言するのに UTI を使用します。


UTI は、他の方の識別スキームに比べていくつかの利点があります。


UTI は逆ドメイン·ネーム·システム規則を使用


UTI は、逆ドメインネームシステム(DNS) の規則に従った文字列(CFString) として定義されています。トップレベルドメインは、(例えば、com) は、最初に来て、一つ以上のサブドメインが続き、実際の型を表すトークンで終わります。例えば、com.apple.application は、アプリを識別する抽象基本型です。ドメインは、ドメイン階層内の UTI の位置を識別するためだけに使用されます。それらは同じような型のいずれのグループ化をも意味するものではありません。


public ドメイン内の UTI は Apple によって定義され、一般的な形式を表すために使用されます。


dyn ドメインでの UTI は予約されています。これらは、UTI への定義の変換が存在しない別の識別スキームからの型の周りの UTI 互換のラッパーとして自動的に作成されます。


統一された型 ID は適合階層で宣言


適合階層は、オブジェクト指向プログラミングの、クラス階層に似ています。階層内の下位型のすべてのインスタンスは、また階層においても、より高い型のインスタンスです。


uniform_type_identifier_2x


適合性は、それが互換性のある型の宣言でアプリの柔軟性を増します。アプリは、処理することができる型を指定し、その下にある全てのサブタイプを自動的に含みます。たとえば、HTML テキストを定義する UTI の public.html は、public.text 識別子に準拠しています。自動的にテキストファイルを開くアプリは、HTML ファイルを開きます


UTI 適合階層は多重継承をサポートしています。ほとんどの UTI は、どのようにしてその物理的性質やデータが使われるか説明し、機能的な UTI を説明する 物理的 UTI への適合性の情報を追跡できます。


UTI のプロパティは、実行時に継承されます。値が必要な場合には、階層が検索され、現在の型で始め、親の型を介して、検索されます。


OS X のアプリは、アプリバンドルでそれらを定義して新しい UTI を追加


アプリは、情報プロパティリストで UTI を宣言することにより、システムに新しい UTI を追加します。宣言は、UTI および適合階層内の位置を説明するためのメタデータを含んでいます。


アプリで宣言した UTI は、エクスポートまたはインポートできます。エクスポートされた UTI は常に、UTI の決定的な宣言を表します。これとは対照的に、インポートされた UTI は、他のアプリで再宣言されます。インポートされた宣言は便利で、別のアプリによって定義されているファイルをあなたのアプリは読めますが、そのアプリをターゲットマシンにインストールする事を要求したくない場合に、便利です。オペレーティングシステムは、インポートおよびエクスポート宣言が両方ある場合、エクスポートされた宣言が優先します。


前提条件の記事

バンドル

プロパティ(特性)リスト


関連記事

(なし)


既出の議論

統一された型の ID 概要


サンプルコードプロジェクト

(なし)






次の章
前の章
目次
Xcode の新機能

インターフェースビルダー ヘルプ
NSObject(class)
概要(NSObject,class)

  • アクセシビリティ
  • VoiceOver での作業
  • アクセサメソッド
  • 命名規則
  • アプリ ID
  • 明示的なアプリ ID は、一つのアプリに一致
    ワイルドカードアプリ ID は複数のアプリに一致
    アプリコード署名
  • ブロックオブジェクト
  • ブロックの宣言
    ブロックの作成
    変更可能なブロックの変数
    ブロックを使用する
    比較演算
  • バンドル
  • バンドルの構造と内容 バンドルリソースへのアクセス
    ロード可能なバンドル
  • カテゴリ
  • 宣言
    実装
  • クラスクラスタ
  • 利点
    検討事項
  • クラスの定義
  • インターフェース
    実装(Implementation)
  • クラスメソッド
  • サブクラス
    インスタンス変数
    self
  • ココア(タッチ)、Cocoa(Touch)
  • フレームワーク(Framework)
    言語
    コーディング規則
  • コレクション(Collection)
  • コレクションクラス
    順序付けスキーム
  • コントローラーオブジェクト
  • コントローラの調整
    ビューコントローラ
    仲介コントローラ(OS X)
    宣言されたプロパティ
  • デリゲート(Delegate)
  • デリゲートとココアフレームワーク
    デリゲートと通知
    データソース
    動的バインディング
  • 動的型付け
  • isa ポインタ
  • 列挙
  • NSEnumerator
    高速列挙
  • 例外処理
  • 例外の種類
    コンパイラディレクティブを使用した例外処理
    信号伝達のエラー
    フレームワーク
    情報プロパティリスト
  • 初期化
  • イニシャライザ宣言の型
    初期化子を実装
    国際化
  • 内観(イントロスペクション)
  • イントロスペクション情報の種類
  • キー値コーディング
  • オブジェクトのプロパティと KVC
    クラスを KVC に準拠させる
  • キー値監視
  • KVO の実装
    KVO はバインディングの不可欠な部分(OS X)
  • メモリ管理
  • メモリ管理の規則
    メモリ管理の側面
    メッセージ
    メソッドのオーバーライド
  • モデルオブジェクト
  • うまく設計されたモデルクラス
  • モデル・ビュー・コントローラ
  • モデルオブジェクト
    ビュー・オブジェクト
    コントローラオブジェクト
  • 複数のイニシャライザ
  • 指定イニシャライザ
    Nib ファイル
  • 通知
  • 通知オブジェクト
    通知を観察する
    通知を投稿
  • アーカイブ
  • 鍵付き連続アーカイバ
    鍵付きアーカイブの作成とデコード
  • オブジェクトの比較
  • 比較ロジックを実装する
  • オブジェクトのコピー
  • オブジェクトコピーのための要件
    メモリ管理への影響
  • オブジェクト作成
  • オブジェクト作成式の形式
    メモリ管理への影響
    ファクトリメソッド
  • オブジェクトの暗号化
  • オブジェクトの暗号化と復号化する方法
    キー付き対連続的アーカイブ
    オブジェクトグラフ
    オブジェクトのライフサイクル
    オブジェクトモデリング
  • オブジェクト可変性(mutability)
  • 可変オブジェクトを受け取る
    可変オブジェクトを格納
    オブジェクトの所有権
    Objective-C
  • プロパティ(特性)リスト
  • プロパティリストの型とオブジェクト
    プロパティリストのベストプラクティス
    プロパティリストのシリアライズ
  • プロトコル
  • 公式、非公式なプロトコル
    正式なプロトコルを採用、準拠
    独自のプロトコルを作成
    ルートクラス
  • セレクタ
  • セレクタの取得
    セレクタの使用
    シングルトン
  • 統一された型の ID
  • UTI は逆ドメイン·ネーム·システム規則を使用
    統一された型 ID は適合階層で宣言
    OS X のアプリは、アプリバンドルでそれらを定義して新しい UTIを追加
  • 値オブジェクト
  • NSValue