2010-05-23 3 views
3

У меня возникли проблемы с настройкой BOOL с использованием @property и @synthesize. Я использую @property BOOL isPaused; И я могу получить его с помощью [myObject isPaused];, но я не могу его установить. Я хотел бы использовать [myObject setPaused: NO];. Я также попробовал @property (setter=setPaused) BOOL isPaused;, но если я не ошибаюсь, тогда мне нужно самому написать этот сеттер.@property setter для BOOL

ответ

5

Почему бы не использовать точечную нотацию?

myObject.isPaused = YES; 
return myObject.isPaused; 

Если ваша собственность объявлена ​​как @property BOOL isPaused, то сеттер всегда называют

[myObject setIsPaused:YES]; 

Чтобы переименовать сеттер вы должны предоставить полную подпись включая двоеточие:

@property(setter=setPaused:) BOOL isPaused; 
... 
[myObject setPaused:YES]; 

BTW, соглашение об именах не включает в себя глаголы в свойстве.

@property(getter=isPaused) BOOL paused; 
+1

спасибо. Раньше я пробовал нотацию, но я не большой поклонник этого. Я тоже не мог заставить его работать? Во всяком случае, я забыл о капитале «Я» в setIsPaused ... И я не знал, что вам нужен двоеточие в атрибуте setter =. – George

+5

Фактически, «isPaused» - это правильное соглашение об именах в этом случае. http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html#//apple_ref/doc/uid/20001282-1004202-BCIGGFCC – JeremyP

+1

@Jeremy: '-isPaused 'как getter в порядке, но я говорю об имени свойства, например [' .playing' ('-isPlaying',' -setPlaying: ')] (http://developer.apple.com/iphone/library /documentation/AVFoundation/Reference/AVAudioPlayerClassReference/Reference/Reference.html#//apple_ref/doc/uid/TP40008067-CH1-SW1). – kennytm

Смежные вопросы