Я почти никогда не видел, чтобы второй использовался, и мне интересно, почему?
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
… в основном то же самое.