Возврат изменяемых и неизменяемых (не являющихся членами) объектов

Я почти никогда не видел, чтобы второй использовался, и мне интересно, почему?

  • Также он не нарушит поддержку в ситуациях, когда NSArray ] ожидается (поскольку это подкласс).
  • И при этом он не нарушит инкапсуляцию , обнаружив изменяемые внутренние компоненты.

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

  • На самом деле является изменчивым. И отключение звука здесь безопасно , поэтому зачем его предотвращать ?
  • Нет необходимости вызывать [[foo fooBar] mutableCopy] autorelease] , который без нужды выделяет дополнительную память , а напрасно тратит время .

Вот варианты методов:

- (NSArray *)fooBar {
    NSMutableArray *fooArray = [NSMutableArray array];
    //populate fooArray
    return fooArray;
}

- (NSMutableArray *)fooBar {
    NSMutableArray *fooArray = [NSMutableArray array];
    //populate fooArray
    return fooArray;
}

Я спрашиваю, поскольку в моем проекте есть несколько методов с одним и тем же шаблоном .
И в большинстве случаев возвращаемый массив будет впоследствии изменен (объединен, отредактирован и т. Д.).
Поэтому я думаю, что должно быть совершенно нормально , чтобы вернуть NSMutableArrays , но никто, похоже, этого не делает .

NSMutableArray , NSMutableSet , NSMutableDictionary … в основном то же самое.

8
задан Sisyphus 19 June 2011 в 18:04
поделиться