如何将([theEvent modifierFlags]& NSCommandKeyMask)的结果强制转换为BOOL?

时间:2015-09-25 21:42:34

标签: objective-c

我已经破坏了这段代码,直到最近我才意识到这不是有效的:

  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。但是当它退出时,我会收到lu1048576

如果没有按下Command键,它会按照您的预期打印0

所以我的问题是,我得到的价值1048576是什么? 我怎样才能将它转换成BOOL所以我可以在同一个方法中多次重复使用它?

1 个答案:

答案 0 :(得分:2)

你必须在被屏蔽后检查结果是0还是1

BOOL alwaysDrawGraphic = ([theEvent modifierFlags] & NSAlternateKeyMask) != 0;

1048576是十六进制0x00100000,它是NSCommandKeyMask

的位位置