コレクションの共通の特徴


コレクションオブジェクト (または単にコレクション) は、通常は同じ型の離散値のコンテナです。コレクションには、他の Core Foundation オブジェクト、カスタムデータ構造、および原始データ値を含めることができます。含まれた Core Foundation オブジェクトは、異なる型のものであってもよいです。厳密に言えば、Core Foundation のコレクションのデータ要素は、プロセッサとコンパイラによって異なるポインタのサイズよりも大きくならないため、"含む" は正確な用語ではありません (しかし概念的には便利です)。しかし、ポインタは多大な柔軟性をもたらすため、コレクションオブジェクトは、ポインタアドレス以上のスペースを取らない原始値 (整数など) と同様に、Core Foundation オブジェクトへの参照とデータの任意の部分へのポインタを許可します。


重要: コレクションオブジェクトを使用して原始値を直接格納する場合は注意が必要です。プラットフォーム上のポインタアドレスのサイズは時間とともに変化する可能性があり、コードが実行されるプラットフォーム間で異なる可能性があるため、原始値をコレクションに直接格納すると、値の切り捨てなどの奇妙な動作が発生する可能性があります。


すべてのコレクションオブジェクトを使用すると、特定の外部プロパティを満たす含まれた値にアクセスできます。一般に "キー" と呼ばれるこのプロパティは、コレクションの型によって施行される構成スキームによって異なります。たとえば、配列のキーは、コレクション内の位置を指定する整数です。一方、"キー" という用語が従来の意味を持つ辞書は、任意の値が、含まれる値を検索するためのキーとして機能することを可能にします。コレクションから取り出された Core Foundation オブジェクトは、所有コレクションによって解放される可能性があるため、永続することは保証されていないので、保持したい場合は保持 (retain) またはコピーする必要があります。特定のコレクション型のキーの詳細については、コレクションの型 を参照してください。


動作は呼び出し関数によって決定される


ほとんどのコレクションオブジェクトには、そのコレクションの要素に対して実行される基本的な操作を定義する一連の呼び出し関数があります。これらの呼び出し関数は以下によって呼び出されます:


Core Foundation オブジェクトを保持するコレクションには、デフォルトの呼び出し関数が用意されています。


呼び出し関数がコレクションオブジェクトのメモリ管理の意味に影響することに特に注意してください。コレクションを作成するときは、そのコレクションにアイテムを追加したり削除するときに使用する呼び出し関数を指定します。デフォルトの呼び出し関数は、CF 型を含むコレクションに適しています。コレクションに追加されたオブジェクトを保持 (retain) し、コレクションから削除されたオブジェクトを解放します。カスタムデータがある場合、またはデフォルトの呼び出し関数が目的に合っていない場合は、独自の呼び出し関数を定義できます。この件については、コレクションの作成とコピー を参照してください。


特に興味深い関数の 1 つは、applier 関数 です。ほとんどのコレクションオブジェクトでは、呼び出し関数を定義できます。次に、このアプライヤー関数へのポインターを、その名前に ApplyFunction が埋め込まれた、コレクション関数に渡して下さい。呼び出し関数で定義された動作は、コレクション内の各要素に繰り返し適用されます。この振る舞いは、基本的に、コレクションを列挙する for ループと同じです。ループ内のコードはコレクション内の各要素に適用されます。


大部分のコレクションが変更不可能な変種を提供


ツリー (他のオブジェクトの真のコンテナではない) を除いて、コレクションには 2 つの "フレーバー" または変種があります。すなわち、不変と変更可能です。不変のコレクション内の値は、コレクションの寿命中に設定されます。それに値を追加したり、値を削除することはできません。ただし、変更可能なコレクションでは、値の追加、値の並べ替え、および値の削除ができます。変更可能なコレクションには、これらのオブジェクトを作成する関数の capacity パラメータによって決まる、固定サイズと可変サイズの 2 つのサブフレーバーがあります。固定サイズのコレクションでは、コレクションに含めることができる値の最大数を設定します。


一方、可変サイズのコレクションは、無制限の数の値を保持できます (または、使用可能なメモリーの量など、コレクションの外部の制約によってのみ制限されます)。固定サイズのコレクションはパフォーマンスが高い傾向がありますが、含めることができる値の数には明確な制限を設ける必要があります。


いくつかのコレクション関数は、変更可能なコレクションと不変なコレクションの両方で動作します (たとえば、データ要素の数を取得したりデータにアクセスしたり) 一方で、要素の追加、挿入、削除、並べ替えなどの操作は可変コレクションオブジェクトでのみ機能します。これらの操作の詳細については、変更可能なコレクションの操作 を参照してください。


前の章 次の章



目次
Xcode の新機能

  • 序文
  • この文書の構成
  • コレクションの共通の特徴
  • 動作は呼び出し関数によって決定される
    大部分のコレクションが変更不可能な変種を提供
  • コレクションの型
  • 配列
    辞書
    セットとバッグ
    樹 (Trees)
    コレクションのカスタマイズ
  • コレクションの作成とコピー
  • カスタムコレクション呼び出し関数の定義
    コレクションの値を取得
    コレクションの検索
    変更可能なコレクションの操作
    コレクションにプログラム定義関数を適用
  • 樹構造の作成と使用
  • CFTree オブジェクトの作成
    親に樹を追加する
    子の樹の取得
    CFTree 構造体でのその他の操作
    文書改訂履歴












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)












    トップへ(Core Foundation)