Obj-C, Получатель в выражении сообщения является неинициализированным значением, предупреждение анализатора? - PullRequest
2 голосов
/ 10 ноября 2011

В этой строке выдается следующее предупреждение анализатора ...

if ([datStartDate compare:now] == NSOrderedDescending) {

Receiver in message expression is an uninitialized value

Строка кода находится в середине IBAction.

Что я делаю не так?

Ответы [ 2 ]

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

Если развернуть треугольник раскрытия рядом с ошибкой (в навигаторе ошибок слева), он покажет вам точный путь к коду, который приводит к ситуации, когда значение не инициализируется.

Вы можете подумать: «Но, анализатор, действительно, это не может никогда случиться». Хотя это может быть правдой, вы создаете в своем коде допущение, которое в будущем может оказаться неверным из-за ошибки или преднамеренного изменения. Это увеличивает хрупкость вашей кодовой базы и приведет к головной боли при обслуживании.

Исправьте код так, чтобы он был явным, и удалите предположение.

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

Существует как минимум один путь кода, который может привести к этой строке, при этом datStartDate все еще не инициализирован.Это означает, что вы никогда не назначали объект datStartDate, даже nil.

...