NSIndexSet クラスリファレンス 翻訳元
このページの最終更新:2010-02-06
ADCの最終更新:2009-08-28
ADCの最終更新:2009-08-28
継承するクラス | NSObject |
準拠しているプロトコル | NSCoding NSCopying NSMutableCopying NSObject (NSObject) |
フレームワーク | /System/Library/Frameworks/Foundation.framework |
使用可能な環境 | Mac OS X v10.3以降 |
コンパニオンガイド | Collections Programming Topics for Cocoa |
宣言ファイル | NSIndexSet.h |
サンプルコード | AnimatedTableView DemoMonkey ImageKitDemo iSpend Sketch+Accessibility |
概観(Overview)
NSIndexSetクラスは、その用法からインデックスとして知られる符号なし整数の変更不能なコレクションを象徴しています。このコレクションはインデックスセットと呼ばれます。
コード中ではインデックスセットはデータ構造の中にインデックスをストアするのに使います。例えば、NSArrayオブジェクトがあったとして、インデックスセットをその配列のサブセットを識別するのに使うことができます。
インデックスセットにはそれぞれのインデックスは一つずつしか収容できません。これは理解すべき重要な概念であり、インデックスセットを整数値をストアするコレクションとして気ままに使用できない理由でもあります。これがどういう動作か説明します。NSIndexSetオブジェクトを4、5、2、5の値を渡して生成した場合、そのインデックスセットには4、5、2のインデックスしか収容されません。インデックスは常にソートされた順が維持されるので、実際に生成したインデックスセットの並び順は2、4、5になります。
ほとんどの場合、整数値をそれぞれストアするよりもインデックスセットを使う方が効果的です。内部的には、NSIndexSetクラスはインデックスをレンジを使って表現しています。パフォーマンスと効率を最大限に引き出す為に、オーバーラップされたレンジはインデックスセット内で自動的に統合されます。つまり、レンジはオーバーラップされているというよりはマージされている、ということです。以上から、インデックスセットのインデックスがより連続的であるほど、インデックスを表すのに要求されるレンジがより少なくなる、ということになります。
NSIndexSetクラスの指定イニシャライザはinitWithIndexesInRange:とinitWithIndexSet:です。
NSIndexSetクラスのサブクラスを作ってはいけません。
NSIndexSetクラスの変更可能なサブクラスはNSMutableIndexSet?です。
コード中ではインデックスセットはデータ構造の中にインデックスをストアするのに使います。例えば、NSArrayオブジェクトがあったとして、インデックスセットをその配列のサブセットを識別するのに使うことができます。
インデックスセットにはそれぞれのインデックスは一つずつしか収容できません。これは理解すべき重要な概念であり、インデックスセットを整数値をストアするコレクションとして気ままに使用できない理由でもあります。これがどういう動作か説明します。NSIndexSetオブジェクトを4、5、2、5の値を渡して生成した場合、そのインデックスセットには4、5、2のインデックスしか収容されません。インデックスは常にソートされた順が維持されるので、実際に生成したインデックスセットの並び順は2、4、5になります。
ほとんどの場合、整数値をそれぞれストアするよりもインデックスセットを使う方が効果的です。内部的には、NSIndexSetクラスはインデックスをレンジを使って表現しています。パフォーマンスと効率を最大限に引き出す為に、オーバーラップされたレンジはインデックスセット内で自動的に統合されます。つまり、レンジはオーバーラップされているというよりはマージされている、ということです。以上から、インデックスセットのインデックスがより連続的であるほど、インデックスを表すのに要求されるレンジがより少なくなる、ということになります。
NSIndexSetクラスの指定イニシャライザはinitWithIndexesInRange:とinitWithIndexSet:です。
NSIndexSetクラスのサブクラスを作ってはいけません。
NSIndexSetクラスの変更可能なサブクラスはNSMutableIndexSet?です。
採用しているプロトコル(Adopted Protocols)
NSCoding
– encodeWithCoder:
– initWithCoder:
NSCopying
– copyWithZone:
NSMutableCopying
– mutableCopyWithZone:
– encodeWithCoder:
– initWithCoder:
NSCopying
– copyWithZone:
NSMutableCopying
– mutableCopyWithZone:
このクラスでできること(Tasks)
インデックスセットの生成(Creating Index Sets)
+ indexSet
+ indexSetWithIndex:
+ indexSetWithIndexesInRange:
– init
– initWithIndex:
– initWithIndexesInRange:
– initWithIndexSet:
+ indexSetWithIndex:
+ indexSetWithIndexesInRange:
– init
– initWithIndex:
– initWithIndexesInRange:
– initWithIndexSet:
インデックスセットの情報の確認(Querying Index Sets)
– containsIndex:
– containsIndexes:
– containsIndexesInRange:
– intersectsIndexesInRange:
– count
– countOfIndexesInRange:
– indexPassingTest:
– indexesPassingTest:
– indexWithOptions:passingTest:
– indexesWithOptions:passingTest:
– indexInRange:options:passingTest:
– indexesInRange:options:passingTest:
– containsIndexes:
– containsIndexesInRange:
– intersectsIndexesInRange:
– count
– countOfIndexesInRange:
– indexPassingTest:
– indexesPassingTest:
– indexWithOptions:passingTest:
– indexesWithOptions:passingTest:
– indexInRange:options:passingTest:
– indexesInRange:options:passingTest:
インデックスセットの比較(Comparing Index Sets)
– isEqualToIndexSet:
インデックスの取得(Getting Indexes)
– firstIndex
– lastIndex
– indexLessThanIndex:
– indexLessThanOrEqualToIndex:
– indexGreaterThanOrEqualToIndex:
– indexGreaterThanIndex:
– getIndexes:maxCount:inIndexRange:
– lastIndex
– indexLessThanIndex:
– indexLessThanOrEqualToIndex:
– indexGreaterThanOrEqualToIndex:
– indexGreaterThanIndex:
– getIndexes:maxCount:inIndexRange:
インデックスの列挙(Enumerating Indexes)
– enumerateIndexesUsingBlock:
– enumerateIndexesWithOptions:usingBlock:
– enumerateIndexesInRange:options:usingBlock:
– enumerateIndexesWithOptions:usingBlock:
– enumerateIndexesInRange:options:usingBlock: