Да, проверка по nil
абсолютно действительна. Где-то глубоко внутри заголовков nil
определяется как (id)0
, что означает, что вы можете использовать равенство указателей для сравнения его с любым объектом Objective-C.
Проницательный наблюдатель поймет, что, поскольку nil
равен нулю, и что структуры условного управления Objective-C (if
, while
и т.п.) принимают любой тип данных, подобный int
, используя указатель объекта в качестве само условие пройдет, если объект не является nil
, и не выполнится, если объект будет nil
:
if (self.spinner) // implicitly checks that self.spinner is non-nil
if (!self.spinner) // implicitly checks that self.spinner is nil
В зависимости от вашего опыта программиста, вам может понравиться или не понравиться эта функция. Но это работает так же, как по сравнению с nil
.