Скажем, у вас есть метод, который возвращает недавно сгенерированный экземпляр NSArray, который построен внутри с помощью NSMutableArray. Вы всегда делаете что-то вроде этого:
- (NSArray *)someArray {
NSMutableArray *mutableArray = [[NSMutableArray new] autorelease];
// do stuff...
return [NSArray arrayWithArray:mutableArray]; // .. or [[mutableArray copy] autorelease]
}
Или вы просто оставляете объект изменяемого массива как есть и возвращаете его напрямую, потому что NSMutableArray является подклассом NSArray:
- (NSArray *)someArray {
NSMutableArray *mutableArray = [[NSMutableArray new] autorelease];
// do stuff...
return mutableArray;
}
Лично я часто превращаю изменяемый массив в NSArray, когда возвращаюсь из методов, подобных этому, просто потому, что я чувствую, что он "безопаснее" или более "правильно" каким-то образом. Хотя, честно говоря, у меня никогда не было проблем с возвратом изменяемого массива, который был приведен к NSArray, так что это, вероятно, не проблема в реальности - но есть ли лучший метод для подобных ситуаций?