2016-11-15 15 views
0

は、私はそれを同期させることができますいずれかのように、私はゲッターとセッターを上書きしたいクラスなぜBOOLに直接アクセスできないのですか:_myBool?

@property (nonatomic, assign) BOOL myBool; 

でプライベートBOOLを持っている、またはシリアルキューに派遣します。

- (BOOL)myBool 
{ 
    __block BOOL test = NO; 
    dispatch_sync(self.shouldShowBannerQueue, ^{ 
     test = _myBool; //This does not work. I get an error "Use of undeclared _myBool" 
    }); 

    return test; 
} 

同じ理由でセッターを無効にすることはできません。 _myBoolに直接アクセスすることはできません。

+2

なぜこのタグは '[swift]'ですか? – Alexander

答えて

0

アクセサーメソッドを定義する場合、暗黙の合成は行われず、_myBool変数はありません。しかし、単にクラスにインスタンス変数を追加してアクセサーメソッドをバックすることができます。

+2

または、 '@synthesize myBool;'を追加してください。 –

+0

@BorisVerebskyまたは '@synthesize myBool = _myBool;'は、暗黙的な動作と同等です。個人的には、カスタムアクセサーを書いている場合にはivarを追加することをお勧めします。なぜなら、デフォルトの動作を持つという@ヒストリのヒントを感じるからです。 – Arkku

関連する問題