Это не сработает. Экземпляр NSBoolean
является объектом и будет отличным от NULL, YES или NO.
Есть два хороших способа проверить значение NSBoolean
.
Первый - использовать boolValue
:
NSNumber *boolean = [NSNumber numberWithBool:YES];
if ([boolean boolValue] == YES) ...
if ([boolean boolValue]) ... // simpler
Второе - использовать идентификатор возвращаемого объекта:
NSNumber *boolean = [NSNumber numberWithBool:YES];
if (boolean == (id)kCFBooleanTrue) ...
Последнее быстрее; он основан на том, что в системе есть только один из NSBoolean YES
и NSBoolean NO
. Они имеют те же значения, что и kCFBooleanTrue
и kCFBooleanFalse
. Я читал, что это безопасно навсегда, но я не уверен, что это часть опубликованной документации Apple.