macOS/iOS API解説

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

目次

-initWithArray:copyItems:

INDEX>Foundation>NSArray

レシーバの配列を配列(anArray)で初期化して返します
-(instancetype)initWithArray:(NSArray *)array
            copyItems:(BOOL)flag

解説

レシーバの配列を配列(anArray)で初期化して返します。
要素をコピーして含有するかどうかを指定できます。

flagがYESの場合、各エレメントはcopyWithZoneメッセージが送信されてコピーされて配列に追加されます。
flagがNOの場合は配列に追加されるとき、各オブジェクトはretainメッセージを送信されます。
変更されない配列(NSArray)は初期化されたあと修正できません。

返り値

( instancetype )

配列(NSArrayまたはそのサブクラス)

引数

( NSArray * )array

もととなる配列

( BOOL )flag

コピーするか(YES/NO)

クラス

NSArray

使用可能

10.2
iOS2.0

例文

#pragma mark initWithArray:copyItems:
-(void)method029
{
    NSMutableString *aaa = [NSMutableString stringWithString:@"aaa"];
    NSMutableString *bbb = [NSMutableString stringWithString:@"bbb"];
    NSMutableString *ccc = [NSMutableString stringWithString:@"ccc"];
    
    NSArray *anArray = 
    [[NSArray alloc] initWithObjects:aaa,bbb,ccc,nil];
    
    NSArray *anotherArray = 
    [[NSArray alloc] initWithArray:anArray copyItems:YES];
    
    id obj1 = [anArray objectAtIndex:1];
    NSLog(@"029 obj1= <0x%08x>,%@",(NSUInteger)obj1,obj1);
    id obj2 = [anotherArray objectAtIndex:1];
    NSLog(@"029 obj2= <0x%08x>,%@",(NSUInteger)obj2,obj2);
    //コピーされているので違うオブジェクトを含んでいる
    //=>029 obj1= <0x06838ee0>,bbb
    //=>029 obj2= <0x06838f80>,bbb
    
    //bbbに+を追加してみる
    [bbb appendString:@"+"];
    
    NSLog(@"029 obj1= <0x%08x>,%@",(NSUInteger)obj1,obj1);
    NSLog(@"029 obj2= <0x%08x>,%@",(NSUInteger)obj2,obj2);
    //obj1とobj2は違うNSString示しているのでobj2はbbbのまま
    //=>029 obj1= <0x06838ee0>,bbb+
    //=>029 obj2= <0x06838f80>,bbb

}

編集時のバージョン

OS X 10.8
iOS 7.0

アップル Apple Keyboard (テンキー付き) -JIS MB110J/A

アップル Apple Keyboard (テンキー付き) -JIS MB110J/A