/ /オブジェクトのコピーを返す - ios、objective-c

オブジェクトのコピーを返す - ios、objective-c

これらの2つのコードの違いは、同じように動作するので、私は理解できません。

- (NSArray *)handleImages
{
NSMutableArray *images = [NSMutableArray new];
//...Do something with the array..
return [images copy];
}


- (NSArray *)handleImages
{
NSMutableArray *images = [NSMutableArray new];
//...Do something with the array..
return images;
}

回答:

回答№1は2

このメソッドは、不変の配列を返すように設定されています。 最初のバージョンは、作成した変更可能な配列を、それを返す前に不変の配列に変換します。 2番目のバージョンは単に可変配列を返します。最初のバージョンは少しです クリーナー呼び出し側は不変の配列を期待しているからです。


回答№2の場合は0

最初のメソッドは、返されたオブジェクトを変更できない不変の配列を返します。

しかし、2番目のメソッドは、返されるオブジェクトを変更することができる可変配列を返します

例: `

- (NSArray *)handleImages
{
NSMutableArray *images = [NSMutableArray new];
//...Do something with the array..
return images;
}

-(void)anyMethod
{
NSMutableArray *array = (NSMutableArray *)[self handleImages];

if([array respondsToSelector:@selector(addObject:)])
{
[array addObject:@"Any Object"]; // You can add any object to this array
}
}

`