-initWithArray:copyItems:
レシーバの配列を配列(anArray)で初期化して返します
-(instancetype)initWithArray:(NSArray *)array copyItems:(BOOL)flag
解説
レシーバの配列を配列(anArray)で初期化して返します。
要素をコピーして含有するかどうかを指定できます。
flagがYESの場合、各エレメントはcopyWithZoneメッセージが送信されてコピーされて配列に追加されます。
flagがNOの場合は配列に追加されるとき、各オブジェクトはretainメッセージを送信されます。
変更されない配列(NSArray)は初期化されたあと修正できません。
返り値
( instancetype )
配列(NSArrayまたはそのサブクラス)
引数
( NSArray * )array
もととなる配列
( BOOL )flag
コピーするか(YES/NO)
フレームワーク
Foundation
クラス
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 }
編集時のバージョン
アップル Apple Keyboard (テンキー付き) -JIS MB110J/A
- 出版社/メーカー: アップル
- 発売日: 2007/08/08
- メディア: Personal Computers
- 購入: 4人 クリック: 974回
- この商品を含むブログ (35件) を見る