Можно ли использовать синтаксис свойства для методов без аргументов? - PullRequest
2 голосов
/ 01 сентября 2011

Допустим, у класса есть простой старый метод без аргументов, объявленный так:

- (NSString *)responseString;

Есть два способа вызвать этот метод. Либо с помощью

string = [instance responseString];

или, с синтаксисом точки, как это:

string = instance.responseString;

Какой предпочтительный способ? Есть ли причины избегать последнего подхода?


Обновление: responseString является свойством класса, за исключением того, что оно не объявлено с помощью @property. По определению это метод доступа (getter). Сгенерированный код точно такой же.

(здесь предполагается objc v2.0 +.)

Ответы [ 3 ]

4 голосов
/ 01 сентября 2011

Мой предпочтительный способ - всегда использовать первый, потому что я думаю, что точечная нотация - это мерзость, которая никогда не должна была добавляться к языку.

Отложив на время мои (оправданные) предубеждения, вы должны толькоиспользуйте точечную запись для вещей, которые являются концептуально свойствами (то есть они не обязательно должны использовать @property для их объявления, но они должны быть атрибутами объекта, а не операциями, которые выполняет объект).Имя метода в этом случае - существительное, поэтому есть вероятность, что -responseString - это свойство, и можно использовать точечную запись.

Пример того, что было бы неуместно использовать точечную записьfor это NSMutableArray s -removeAllObjects метод.

Примечание: независимо от того, используете ли вы точечную запись или нет, рекомендуется всегда использовать @property для объявления вещей, которые концептуально являются свойствами.

1 голос
/ 01 сентября 2011

Первая и основная причина, по которой следует избегать использования этого типа синтаксиса точек, заключается в том, что настоятельно не рекомендуется самой Apple и может привести к сбою или нежелательному результату при неправильном использовании.

Прочтите раздел «Неправильное использование синтаксиса точек» в «Синтаксис точек» (из документа Apple Doc).Там перечислены различные использования синтаксиса точек, которые настоятельно не рекомендуется.

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

1 голос
/ 01 сентября 2011

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

• Используйте точечный синтаксис там, где это имеет смысл (только свойства)

• Используйте его как можно чаще, когда не требуется смешивание

Пример смешивания:

NSString *description = [array objectAtIndex:i].description; // Use [[array objectAtIndex:i] description] instead
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...