Вернуть изменчивый или копию - PullRequest
2 голосов
/ 26 июня 2010

Если у вас есть объект из цели c, который создает массив или словарь с использованием изменяемого объекта, следует ли затем скопировать объект или вернуть изменяемую версию? Это, вероятно, дело мнений, но я никогда не мог определиться. Вот два примера, чтобы показать, о чем я говорю:

- (NSArray *)myMeth
{
    NSMutableArray *mutableArray = [NSMutableArray array];
    for (int i=0; i<10; i++) {
        [mutableArray addObject:[NSNumber numberWithInt:i]];
    }
    return mutableArray;//in order for calling code to modify this without warnings, it would have to cast it
}

- (NSArray *)myMeth
{
    NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
    for (int i=0; i<10; i++) {
        [mutableArray addObject:[NSNumber numberWithInt:i]];
    }

    NSArray *array = [[mutableArray copy] autorelease];
    [mutableArray release];
    return array;//there is no way to modify this
}

1 Ответ

3 голосов
/ 26 июня 2010

Зависит от того, для чего будет использоваться метод, или для чего планируется использовать возвращаемый массив.

По договоренности считается нормальным копировать и автоматически освобождать изменяемый массив перед его возвратом, тем самым соблюдая соглашения о владении объектом и защищая данные от изменения после их возвращения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...