В качестве альтернативного подхода к принятому ответу вы можете просто изменить тип с NSNumber * на BOOL в определении интерфейса управляемого объекта, например:
@property (nonatomic) BOOL useGPS; // Notice that the 'retain' is also removed as we're now dealing with a scalar rather than an NSObject
Здесь обсуждаются различные альтернативные подходы здесь , но ответ Криса Хансона был для меня наиболее ярким, особенно:
Если у вас есть числовой атрибут
(включая логический атрибут) это
требуется, вы можете просто ввести его как
вместо этого скаляр
правильная вещь:
@ свойство (неатомное) BOOL isDone;
Даже если атрибут необязательный,
это все еще будет работать - это будет просто
сопоставить «не присутствует» с «ложным».
и для более выверенной реализации Какао:
Еще одна вещь, которую вы могли бы сделать
это имя свойства "сделано" и просто
укажите получатель как «isDone». Это
обычное соглашение об именовании Какао:
@ свойство (неатомное, getter = isDone)
BOOL сделано;
Тогда вы можете написать "if (item.done) {
...} "или" item.done = NO; "и
Компилятор по-прежнему будет генерировать -isDone
для доступа к собственности.
Спасибо, Крис, и надеюсь, что это кому-нибудь поможет.