Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何将([theEvent modifierFlags]&NSCommandKeyMask)的结果键入布尔?_Objective C - Fatal编程技术网

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
位。