Objective c 如何将([theEvent modifierFlags]&NSCommandKeyMask)的结果键入布尔?
我有一个被破解的代码,直到最近我才意识到这是无效的:Objective c 如何将([theEvent modifierFlags]&NSCommandKeyMask)的结果键入布尔?,objective-c,Objective C,我有一个被破解的代码,直到最近我才意识到这是无效的: BOOL alwaysDrawGraphic = ([theEvent modifierFlags] & NSAlternateKeyMask); if( alwaysDrawGraphic ) { NSLog(@"Hey"); } 因为按位运算的结果&不会返回布尔值 所以我想我可以使用lldb来po([theEvent modifierFlags]&NSAlternateKeyMask),但我得到
BOOL alwaysDrawGraphic = ([theEvent modifierFlags] & NSAlternateKeyMask);
if( alwaysDrawGraphic )
{
NSLog(@"Hey");
}
因为按位运算的结果&
不会返回布尔值
所以我想我可以使用lldb
来po([theEvent modifierFlags]&NSAlternateKeyMask)
,但我得到了这个错误:
error: use of undeclared identifier 'NSAlternateKeyMask'
error: 1 errors parsing expression
因此,当我按下命令键时,我尝试只记录值,NSLog(@“%lu”,([theEvent modifierFlags]&NSCommandKeyMask))代码>
Xcode纠正了我的错误,并让我知道该值是一个无符号长字符串
。但是当它注销时,我得到了这个lu
:1048576
如果未按命令键it,它将按预期打印0
所以我的问题是,我得到的值是多少
我怎样才能把它输入一个BOOL
,这样我就可以在同一个方法中重复使用它好几次呢?你必须在屏蔽后检查结果是0还是1
BOOL alwaysDrawGraphic = ([theEvent modifierFlags] & NSAlternateKeyMask) != 0;
1048576是十六进制0x00100000,这是NSCommandKeyMask
的位位置。为了清楚起见,如果NSAlternateKeyMask
中的所有标志都在modifierFlags
中设置,则始终是YES
。只有一个标志(位)。掩码0x80000
(524288)忽略所有0
位,但第19位是NSAlternateKeyMask
位。