Нет никакой разницы, кроме того, как вы хотите отформатировать код.
Причина, по которой это работает, находится в документации для NSObject
Для удобства retain возвращает self, поскольку оно может использоваться во вложенных выражениях.
Следовательно, retain
возвращает вызываемый объект (изменяемый массив в вашем случае), что означает, что вы можете вкладывать методы или просто использовать возвращаемое значение в присваивании, как в вашем примере.
Для возврата значений из методов вы должны убедиться, что это autorelease
'd
Итак, используя ваш фрагмент
- (NSMutableArray *)myMethod;
{
NSMutableArray *myArray = [someObject returnMutableArray];
// ... do some work
return myArray;
}
Поскольку метод returnMutableArray
не содержит ключевое слово alloc
, new
или copy
, его необходимо сделать так, чтобы он возвращал объект autorelease
'd. Теперь, когда мы возвращаем объект в конце метода, нам не нужно предпринимать дальнейшие сохранения, поскольку он будет готов к возврату.
Если вы не уверены в управлении памятью, вам следует прочитать Расширенное руководство по управлению памятью или (желательно) начать использовать ARC