NSMutableArrayクラス

2010. 10. 24
●概要

NSMutableArrayクラスは、変更可能な配列オブジェクトを管理する、オブジェクトのプログラムインターフェイスを宣言します。

このクラスは基本的な配列の処理動作はNSArrayから継承し、挿入と削除の操作を追加しています。

NSArrayとNSMutableArrayはクラスクラスタの一部で、NSArrayまたはNSMutableArrayクラスの現実のインスタンスの配列ではなく、プライベートなサブクラスの一つです。

NSArrayとNSMutableArrayの配列のクラスはプライベートで、インターフェイスはパブリック、抽象的なスーパークラスにより宣言されています。

NSMutableArrayのメソッドは、以下のプリミティブメソッドを基本概念としています。

    insertObject:atIndex:
    removeObjectAtIndex:
    addObject:
    removeLastObject
    replaceObjectAtIndex:withObject:

サブクラスでは、これらのメソッド全てをオーバーライドする必要がありますが、最初の2つを使って要求する機能を実装するのは非能率的になる可能性があります。

NSMutableArrayのインターフェイスが提供する他のメソッドは、指定した配列の位置にオブジェクトを挿入したり、指定した配列の識別子や位置のオブジェクトを削除する便利な方法を提供します。

NSArrayと同様に、NSMutableArrayのインスタンスはその内容への参照を強固に保持しています。

ガベージコレクションを使用しない場合、配列にオブジェクトを追加する時は、オブジェクトはretainメッセージを受け取ります。

動的配列からオブジェクトを削除する時は、releaseメッセージを受け取ります。

オブジェクトへの参照が無い場合、オブジェクトが解放されていることを意味します。

プログラムがオブジェクトの参照を保持するには、配列から削除される前にオブジェクトにretainメッセージを送らないと参照が無効になります。

例えば以下のコードのように、anObjectをretainする前に配列から削除すると、3行目のでランタイムエラーが発生する可能性があります。

id anObject = [[anArray objectAtIndex:0] retain];
[anArray removeObjectAtIndex:0];
[anObject someMessage];


述語を使用したフィルタリング

filterUsingPredicate:メソッドは、NSPredicateオブジェクトを使ってin-place、in-memoryで配列をフィルタリングします。

Core Dataフレームワークで使用する場合、データストアへの継続的なフェッチの往復無しに、現在の配列オブジェクトに効率的なフィルタリングを提供します。

このメソッドとNSPredicateクラスは、iPhone OS v3.0より前では利用できません。



●タスク

●可変配列の生成と初期化

+ arrayWithCapacity:
– initWithCapacity:

●オブジェクトの追加

– addObject:
– addObjectsFromArray:
– insertObject:atIndex:
– insertObjects:atIndexes:

●オブジェクトの削除

– removeAllObjects
– removeLastObject
– removeObject:
– removeObject:inRange:
– removeObjectAtIndex:
– removeObjectsAtIndexes:
– removeObjectIdenticalTo:
– removeObjectIdenticalTo:inRange:
– removeObjectsInArray:
– removeObjectsInRange:
– removeObjectsFromIndices:numIndices:

●オブジェクトの置換

– replaceObjectAtIndex:withObject:
– replaceObjectsAtIndexes:withObjects:
– replaceObjectsInRange:withObjectsFromArray:range:
– replaceObjectsInRange:withObjectsFromArray:
– setArray:

●コンテンツのフィルタリング

– filterUsingPredicate:

●コンテンツの並べ替え

– exchangeObjectAtIndex:withObjectAtIndex:
– sortUsingDescriptors:
– sortUsingComparator:
– sortWithOptions:usingComparator:
– sortUsingFunction:context:
– sortUsingSelector:



●クラスメソッド



●インスタンスメソッド

addObject:

- (void)addObject:(id)anObject

レシーバの最後に指定したオブジェクトを挿入します。

重要:anObjectがnilの場合、NSInvalidArgumentExceptionが発生します。

anObject:レシーバの内容の最後に追加するオブジェクトを指定します。
この値をnilにしてはいけません。


addObjectsFromArray:

- (void)addObjectsFromArray:(NSArray *)otherArray

レシーバの内容の末尾に、指定した他の配列のオブジェクトを追加します。

otherArray:レシーバの内容の末尾に追加する配列オブジェクトを指定します。


exchangeObjectAtIndex:withObjectAtIndex:

- (void)exchangeObjectAtIndex:(NSUInteger)idx1withObjectAtIndex:(NSUInteger)idx2

指定したインデックスで、レシーバのオブジェクトを交換します。

idx1:idx2で指定したオブジェクトと入れ替えるオブジェクトのインデックスを指定します。

idx2:idx1で指定したオブジェクトと入れ替えるオブジェクトのインデックスを指定します。


insertObject:atIndex:

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index

指定したインデックスにある配列のコンテンツに、指定したオブジェクトを挿入します。

indexで示される場所が既に使用されている場合、indexの示す場所とそれ以降のオブジェクトはインデックス番号にそれぞれ1が加えられてシフトします。

NSArrayオブジェクトはC配列とは異なることに注意してください。

つまり、たとえ配列の生成時にサイズを指定しても、指定したサイズはヒントに過ぎず、実際の配列のサイズは0のままです。

これは配列の現在の要素数より大きいインデックスの場所に、オブジェクトを挿入することはできないことを意味します。

例えば、配列の要素数が2で2つのオブジェクトが含まれている場合、インデックス番号の0、1、2にオブジェクトを追加することができます。

インデックス番号3は範囲外の不正なものとなり、要素数2の配列にインデックス番号3でオブジェクトを追加しようとすると、NSMutableArrayは例外を発生させます。

anObject:配列のコンテンツに追加するオブジェクトを指定します。
この値はnilにすることはできません。
重要:anObjectがnilの場合、NSInvalidArgumentExceptionが発生します。

index:anObjectを挿入するための配列の場所となるインデックスを指定します。
この値は配列の要素数より大きい値を指定することはできません。
重要:配列の要素数を超えるindexを指定した場合、NSRangeExceptionが発生します。


removeObjectAtIndex:

- (void)removeObjectAtIndex:(NSUInteger)index

indexの場所にあるオブジェクトを削除します。

ギャップを埋めるため、index以降の全ての要素はインデックス番号がそれぞれ1が引かれて移動します。

index:配列内のオブジェクトを削除するためのインデックスを指定します。
この値は配列の範囲を超えて指定することはできません。
重要:配列の要素数を超えるindexを場合、NSRangeExceptionが発生します。


removeObjectsInArray:

- (void)removeObjectsInArray:(NSArray *)otherArray

指定した別の配列内のオブジェクトを、レシーバの配列から削除します。

このメソッドはremoveObject:に似ていますが、一回の処理でオブジェクト内の大きなセットを効率的に削除することができます。

otherArray内のオブジェクトがレシーバの配列に含まれていない場合、このメソッドは何の効果も与えません。
(ただし、コンテンツを検索するオーバーヘッドは生じます)

このメソッドは、otherArray内の全ての要素がhashとisEqual:に応答することを前提にしています。

otherArray:レシーバの配列から削除するためのオブジェクトを含む配列を指定します。



参考文献

NSMutableArray Class Reference






Bose SoundLink around-ear wireless headphones II
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

Bose SoundLink around-ear wireless headphones II
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