在不使用点语法的情况下反转BOOL属性

时间:2012-12-10 16:55:43

标签: objective-c syntax declared-property

在这行代码中,我正在反转BOOL值:

 someObject.boolValue = ![someObject boolValue];

如何在“纯”Objective-C语法中重写此行,不使用点语法?

3 个答案:

答案 0 :(得分:3)

使用

[someObject setBoolValue:!([someObject boolValue])];

答案 1 :(得分:2)

[someObject setBoolValue:![someObject boolValue]];

答案 2 :(得分:1)

始终使用NSNumber来避免BOOL获得设置为非布尔值(大于一)的值。

NSNumber * currValue = [NSNumber numberWithBOOL:[someObject boolValue]];
NSNumber * yesNum = [NSNumber numberWithBOOL:YES];
NSNumber * noNum = [NSNumber numberWithBOOL:NO];

if( NSOrderedSame == [currValue compare:yesNum] ){
    [someObject setBoolValue:[noNum boolValue]];
}
else if( NSOrderedSame == [currValue compare:noNum] ){
    [someObject setBoolValue:[yesNum boolValue]];
}
else {
    // Set default
    [someObject setBoolValue:[yesNum boolValue]];
}