Objective c 在不使用点语法的情况下反转布尔属性

Objective c 在不使用点语法的情况下反转布尔属性,objective-c,syntax,declared-property,Objective C,Syntax,Declared Property,在这行代码中,我正在反转BOOL值: someObject.boolValue = ![someObject boolValue]; 如何用“纯”Objective-C语法重写这一行,而不使用点语法?[someObject setBoolValue:![someObject boolValue][someObject setBoolValue:![someObject boolValue]使用 [someObject setBoolValue:!([someObject boolValue]

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

 someObject.boolValue = ![someObject boolValue];

如何用“纯”Objective-C语法重写这一行,而不使用点语法?

[someObject setBoolValue:![someObject boolValue]
[someObject setBoolValue:![someObject boolValue]

使用

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


始终使用NSNumber以避免布尔值设置为非布尔值(大于1)

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]];
}

始终使用NSNumber以避免布尔值设置为非布尔值(大于1)

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]];
}

点语法没有错。仅在内部转换为以下答案。别犹豫,谢谢你,ACB,我知道。这只是我个人的兴趣以防万一(来自AppleDoc):“点语法纯粹是访问器方法调用的方便包装器。使用点语法时,仍然使用getter和setter方法访问或更改属性。”点语法没有任何错误。仅在内部转换为以下答案。别犹豫,谢谢你,ACB,我知道。这只是我个人的兴趣以防万一(来自AppleDoc):“点语法纯粹是访问器方法调用的方便包装。使用点语法时,仍然使用getter和setter方法访问或更改属性。”