Есть ли обратная сторона для отправки сообщения нулевому объекту в задаче c? - PullRequest
2 голосов
/ 04 мая 2011

Я долгое время программист на C ++, с большим количеством времени на C #.Однако сейчас я работаю в Objective C, и мне интересно, есть ли обратная сторона для отправки сообщения нулевому объекту в Objective C?

Например, я очень привык к этому:

MyClass* c = NULL;
// ...
if( c != NULL ) c->MyMethod();

Итак, в Задаче C я обнаружил, что делаю:

MyClass* c = nil;
// ...
if( c != nil ) [c MyMethod];

Так что же я?Мне интересно, есть ли какая-либо польза от проверки на ноль?Является ли Objective C достаточно умным, чтобы не делать лишней странной обработки, если я пытаюсь отправить сообщение на ноль?Или есть какая-то скрытая стоимость, которая делает целесообразным продолжение проверки на ноль?

Ответы [ 3 ]

4 голосов
/ 04 мая 2011

В Objective-C вам не нужно проверять nil, сообщение с действительным значением nil является абсолютно действительным, и в большинстве случаев возвращает ноль или 0, если возвращаемое значение является целым числом. Возвращаемое значение не определено, если возвращаемое значение передаваемого сообщения является float, double или struct.

3 голосов
/ 04 мая 2011

Неа.В этом красота Objective-C.

2 голосов
/ 05 марта 2012

Обмен сообщениями ноль не проблема, если возвращаемое значение означает полный в этом контексте. Отладка может в некоторых случаях усложниться ...

"Если метод возвращает любой тип указателя, любой целочисленный скаляр с размером, меньшим или равным sizeof (void *), с плавающей запятой, double, long double или long long, то сообщение, отправленное на nil, возвращает 0 "(Apple - ссылка ниже) - https://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.html (отправка сообщения на ноль).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...