Передайте NSMutableArray или NSMutableDictionary методу - вы можете добавить к нему? - PullRequest
1 голос
/ 10 июля 2011

Если у меня есть NSMutableArray или NSMutableDictionary и я передаю его методу а-ля:

-(void)addToThisArray:(NSMutableArray *)theMutableArray
{
    [theMutableArray addObject:@"test"];
}

и назовите это как:

 NSMutableArray *theMutableArrayToPass = [[NSMutableArray alloc] init];
 [theMutableArrayToPass addObject:@"2"];
 [self addToThisArray:theMutableArrayToPass];

Это правильный способ изменить NSMutableArray или NSMutableDictionary? Я, конечно, сделал бы намного больше для массива / словаря, чем этот пример, но я привык к Perl, и мы все время передаем по ссылке.

1 Ответ

7 голосов
/ 10 июля 2011

Да, цель-c также всегда передается по ссылке для объектов.

Поскольку этот ответ был написан, теперь существует исключение, хотя оно является подробностью реализации и не меняет практических деталей претензии.

Тэгированные указатели технически передаются по значению, потому что ссылка на самом деле является данными. Они также, по определению, неизменны, поэтому это деталь реализации, которая не имеет практических последствий.

...