我已经破坏了这段代码,直到最近我才意识到这不是有效的:
BOOL alwaysDrawGraphic = ([theEvent modifierFlags] & NSAlternateKeyMask);
if( alwaysDrawGraphic )
{
NSLog(@"Hey");
}
因为按位操作&
的结果不会返回BOOL。
所以我想我可以lldb
使用po ([theEvent modifierFlags] & NSAlternateKeyMask)
,但我只是得到了这个错误:
error: use of undeclared identifier 'NSAlternateKeyMask'
error: 1 errors parsing expression
然后,当我按下Command键时,我试图只是NSLog
值,
NSLog(@"%lu", ([theEvent modifierFlags] & NSCommandKeyMask));
Xcode纠正了我,让我知道该值是unsigned long
。但是当它退出时,我会收到lu
:1048576
如果没有按下Command键,它会按照您的预期打印0
所以我的问题是,我得到的价值1048576
是什么?
我怎样才能将它转换成BOOL
所以我可以在同一个方法中多次重复使用它?
答案 0 :(得分:2)
你必须在被屏蔽后检查结果是0还是1
BOOL alwaysDrawGraphic = ([theEvent modifierFlags] & NSAlternateKeyMask) != 0;
1048576是十六进制0x00100000,它是NSCommandKeyMask