Отказ от ответственности: ограниченное знание Objective-C (передача любопытства).Objective-C Bool Литералы и макросы
if (@YES)
против
if (YES)
В чем разница?
Из того, что я понимаю, @YES является литералом объекта bool, а YES - макросом, который расширяется до 1? Это верно? Если да, зачем использовать @YES вместо YES или наоборот?
@ Аристиды: Нет, но '@ YES',' @ NO', 'YES' и' 1' - все * отличные от нуля *, и это то, что считается в если выражение. –
@Aristides 'if (@NO)' отличается от 'if (NO)'. Первый проверяет, возвращает ли '[NSNumber numberWithBool: NO]' действительный объект (он делает). Последний фактически проверяет, является ли значение ложным. –
Вот что я имел в виду. if (@literal) затем просто проверяет, возвращает ли он объект (который в любом случае был бы правильным), а если (NO) становится if (0) и, следовательно, фактическим предполагаемым тестом? – Aristides