NSSetクラス

2010. 10. 24
●概要

NSSet、NSMutableSetNSCountedSetクラスは、オブジェクトのセットを管理する、オブジェクトのプログラムインターフェイスを宣言します。

NSSetは、集合の数学的概念のサポートを提供します。

セットは数学的観念とNSSetの実装の両方の意味があり、要素の異なる順序無しの集合を指します。

NSSetのサブクラスであるNSMutableSetとNSMutableSetのサブクラスであるNSCountedSetクラスは、内容が変更できるセットを提供します。

NSSetとNSMutableSetはクラスクラスタの一部であり、セットは実際のNSSetまたはNSMutableSetのインスタンスではありません。

むしろインスタンスは、プライベートサブクラスの一つとして属しています。
(利便性のため、厳密なクラスの一員としてではなく、これらのインスタンスいずれかに属する条件のセットを使用します)

とはいえセットのクラスはプライベート、インターフェイスはパブリックで、NSSetとNSMutableSetは抽象的なスーパークラスとして宣言されています。

ただし、NSCountedSetはクラスクラスタの一部ではなく、NSMutableSetのサブクラスとして具現化されています。

NSSetは、静的なオブジェクトのセットのプログラムインターフェイスを宣言します。

静的なセットは生成時に情報を入力し、その後の情報入力の修正はできない規定になっています。

もう一方のNSMutableSetは、動的なオブジェクトのセットのプログラムインターフェイスを宣言します。

動的(または可変)セットは、いつでも情報入力の追加と削除をすることができ、メモリは必要に応じて自動的に確保します。

要素の順序が重要ではなく、セットに含めるオブジェクトの性能を考査した上で、セットの代わりに配列を使うこともできます。
(配列には順序があり、要素によってはセットより遅い場合があります)

セットのオブジェクトは、NSObjectプロトコルメソッドのhashとisEqual:に応答する必要があります。

セット内に可変オブジェクトを格納する場合、可変オブジェクトの内部状態にオブジェクトのhashメソッドが依存しない、またはセット内の可変オブジェクトを修正しないことに注意してください。
(集合内に可変オブジェクトを与えることはできますが、困難なことに注意してください)

セットに追加するオブジェクトはコピーではなく、セットへ追加する前にオブジェクトはretainメッセージを受け取ります。

通常、一時的なセットの生成には、NSSetクラスオブジェクトのset~メソッドの内のひとつを送ります。

これらのメソッドは、(もしあれば)引数を渡して、要素を含むNSSetオブジェクトを返します。

setメソッドは便利なメソッドで、空の可変セットを生成します。

セットクラスはNSCopyingとNSMutableCopyingプロトコルを採用し、もう一方のタイプのセットへの変換を容易に行えます。

NSSetは、セットの要素を問い合わせるメソッドを提供します。

allObjectsは、セット内のオブジェクトを含む配列を返します。

anyObjectは、セット内のいくつかのオブジェクトを返します。

countは、セット内の現在のオブジェクト数を返します。

member:は、指定したオブジェクトと同じセット内のオブジェクトを返します。

また、intersectsSet:はセットの積集合(2つのセット間の共通要素)かを分析、isEqualToSet:は同一性かを分析、isSubsetOfSet:は部分集合(あるセットがもう一つのサブセット)かを分析します。

objectEnumeratorメソッドは、セットの要素の順次走査を提供します。

Mac OS X v10.5以降ではより性能を向上した、Objective-Cを使った高速列挙が使用できます。

NSSetのmakeObjectsPerformSelector:とmakeObjectsPerformSelector:withObject:メソッドは、セット内の個々のオブジェクトにメッセージを送ることができます。

NSSetには『toll-free bridged』の対象としてCore FoundationのCFSet Referenceがあります。

これはFoudationオブジェクトを橋渡ししてCore Foundationの型に変換し、関数やメソッドで呼び出せることを意味します。

したがってNSSet *パラメータを参照する際、CFSetRefに渡し、CFSetRefパラメータとして参照でき、(コンパイラの警告を抑えるために型変換をして)NSSetインスタンスに渡すこともできます。



●タスク

●セットの生成

+ set
+ setWithArray:
+ setWithObject:
+ setWithObjects:
+ setWithObjects:count:
+ setWithSet:
– setByAddingObject:
– setByAddingObjectsFromSet:
– setByAddingObjectsFromArray:

●セットの初期化

– initWithArray:
– initWithObjects:
– initWithObjects:count:
– initWithSet:
– initWithSet:copyItems:

●要素のカウント

– count

●セットメンバーへのアクセス

- allObjects
– anyObject
– containsObject:
– filteredSetUsingPredicate:
– makeObjectsPerformSelector:
– makeObjectsPerformSelector:withObject:
– member:
– objectEnumerator
– enumerateObjectsUsingBlock:
– enumerateObjectsWithOptions:usingBlock:
– objectsPassingTest:
– objectsWithOptions:passingTest:

●セットの比較

– isSubsetOfSet:
– intersectsSet:
– isEqualToSet:
– valueForKey:
– setValue:forKey:

●ソートした配列の生成

– sortedArrayUsingDescriptors:

●キー値の監視

– addObserver:forKeyPath:options:context:
– removeObserver:forKeyPath:

●セットの記述

– description
– descriptionWithLocale:



●クラスメソッド

set

+ (id)set

空のセットを新規作成し、返します。

このメソッドはNSSetクラスのサブクラスであるNSMutableSetを使用するために宣言されています。



●インスタンスメソッド

allObjects

- (NSArray *)allObjects

セットのメンバーに含まれている配列、またはセットにメンバーが無い場合は空の配列を返します。

配列内のオブジェクトの順序は定義されていません。


anyObject

- (id)anyObject

レシーバの中のオブジェクトを一つ、またレシーバにオブジェクトが含まれていない場合はnilを返します。

返されるオブジェクトは、レシーバの都合の良いものが選ばれます。
(この選抜はランダムであることが保証されていません)


count

- (NSUInteger)count

レシーバのセットの要素数を返します。


objectEnumerator

- (NSEnumerator *)objectEnumerator

レシーバのセットからオブジェクトを取り出し、列挙子として返します。

NSEnumerator *enumerator = [mySet objectEnumerator];
id value;

while ((value = [enumerator nextObject])) {
    /* code that acts on the set's values */
}

このメソッドはNSSetの可変サブクラスであるNSMutableSetクラスで使用されますが、この最中にレシーバのセットを改変してはいけません。

レシーバのセットに変更を加えたい場合は、allObjectsメソッドでセットのスナップショットを作って使用してください。

スナップショットで加えた変更は、オリジナルのセットに反映されません。



参考文献

NSSet Class Reference






Wave SoundTouch music system IV
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
06 | 2017/07 | 08
Sun Mon Tue Wed Thu Fri Sat
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Wave SoundTouch music system IV
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR