Метод доступа, который возвращает значение против метода доступа, который возвращает ссылку? - PullRequest
0 голосов
/ 21 ноября 2011

Из моего понимания оба следующих метода получения ссылаются на реальный объект.Так в чем же разница между ними?
Когда и почему вы хотите использовать второй метод получения?

- (MyObject *)myObject
{
   return _myObject;
}

- (void)getMyObject:(MyObject **)myObject
{
   if (!myObject)
   {
      *myObject = _myObject;
   }
}

Ответы [ 2 ]

4 голосов
/ 21 ноября 2011

Вы бы не использовали второй.

Если вам не нравится вводить в заблуждение людей / себя позже, не следуя стандартным соглашениям.

Было бы более разумно, если бы был другой фрагмент данных, который также можно было бы вернуть, например, посмотрите на NSManagedObjectContext

- (BOOL)save:(NSError **)error

Важным результатом метода является YES / NO, он сохранил его, но затем мы также можем получить объект NSError для проверки на наличие ошибки.

0 голосов
/ 21 ноября 2011

В Objective C «объект» является указателем C, поэтому значение объекта фактически уже совпадает со ссылкой на структуру (непрозрачная структура со скрытыми полями, если вы хотите, чтобы код был переносимым между средами выполнения Objective C).

Так что нет "против".

Ваш первый пример - оба.

Существуют особые ситуации, когда алгоритму требуется ссылка на ссылку или указатель на указатель, но не очень часто. Это будет ваш второй пример.

...