一般的延迟初始化技术用于与对象的指针,不与原始类型。这是因为一个BOOL只有两个不可能性的状态:NO和YES,没有了“不确定状态”,它通常与零的对象相关联。
为什么它不切换的原因是,你是不是翻转它,你只是将它设置为YES 当这等于NO,但你是不是办案时,它等于是。如果你想切换它只是做到这一点:
-(BOOL)turn
{
return _turn= !_turn;
}
PS:谁可以说,你的方法是不正常吸气,因为你是返回之前改变变量。所以我建议只返回_turn而不切换它,并创建另一个分离的方法来切换变量。
此外,我想提一提,你在做什么,不叫延迟初始化,我会告诉你延迟初始化的情况:
// In the interface:
@property(nonatomic,readonly) NSNumber* turnObject;
// In newer compiler versions it should be auto synthesized to _turnObject
// In the implementation:
-(BOOL) turn
{
// In this case I am not toggling it
if(!_turnObject) // Equal to if(turnObject==nil)
_turnObject= @(NO); // Equal to _turnObject=[NSNumber numberWithBOOL: NO];
return _turnObject;
}
问题不明确...... –
@BhanuPrakash在此之后吸气剂,我不能把我的回合属性设置为NO。例如:'self.turn =!self.turn;'由于getter,结果将是YES,我想但是为什么? –