macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

addObserver:toObjectsAtIndexes:forKeyPath:options:context:

指定した順番でキーバリューオブザービングの通知に登録します
-(void)addObserver:(NSObject *)anObserver
             toObjectsAtIndexes:(NSIndexSet *)indexes
             forKeyPath:(NSString *)keyPath
             options:(NSKeyValueObservingOptions )options
             context:(void *)context

解説

指定した順番でキーバリューオブザービングの通知に登録します。
addObserver:forKeyPath:options:context:.を繰り返し呼び出すよりもかなり速いです。

返り値

( void )

なし

引数

( NSObject * )anObserver

オブザーバーオブジェクト

( NSIndexSet * )indexes

番号

( NSString * )keyPath

キーパス

( NSKeyValueObservingOptions  )options

オプション

( void * )context

コンテキスト

クラス

NSArray

使用可能

10.3
iOS2.0

参照

-removeObserver:fromObjectsAtIndexes:forKeyPath:

例文

//監視対象のオブジェクト通知
-(void )observeValueForKeyPath:(NSString *)keyPath ofObject:( id )object 
                           change:(NSDictionary *)change 
                          context:(void *)context
{
    NSLog( @"key = %@,object = %@,change = %@" ,keyPath,[object description],[change description]);
} 
#pragma mark addObserver:toObjectsAtIndexes:forKeyPath:options:context:
-(void)method013
{
    NSMutableString *aString = [NSMutableString stringWithCapacity:1];
    [aString appendString:@"aString"];
    NSMutableArray *anArray = [NSMutableArray arrayWithObjects:@"aaa",[NSNumber numberWithFloat:2.0],@"bbb",@"ccc",@"ddd",@"eee",@"fff",@"ggg",@"hhh",nil];
    
    [anArray addObject:aString];
    NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
    [indexSet addIndex:3];
    [indexSet addIndex:4];
    [indexSet addIndex:5];
    [indexSet addIndex:6];
    [indexSet addIndex:7];
    [indexSet addIndex:8];
    [indexSet addIndex:9];
    
    //
    [anArray addObserver:self //(NSObject *)anObserver
        toObjectsAtIndexes:indexSet //(NSIndexSet *)indexes
        forKeyPath:@"selection" //(NSString *)keyPath
        options:NSKeyValueObservingOptionInitial //(NSKeyValueObservingOptions )options
        context:nil //(void *)context
     ];
    [aString appendString:@"+aString"];
    [anArray removeObjectAtIndex:9];
    //NSLog(@"013 = %@",[anArray description]);
    
    //=>
}