我遇到了一些,至少对我来说,Apple 在鼠标处理事件中使用的例程的奇怪行为,在文档中他们以静态方式使用变量而不是这样声明,这是前一段时间,但是如果你使用 GLKit -lib,它们表现出相同的行为,例如类似于以下内容:
GLKVector3 GLKVector3Set(float x, float y, float z)
{
GLKVector3 v = { x, y, z };
return v;
}
在正常情况下,函数内声明的所有变量都放在堆栈上,并在函数返回调用时消失...
鼠标输入的情况与此类似:
(void) mouseInput:(mouseEvent *)event
{
BOOL hasClicked = NO;
//
if(hasClicked)
{
//
} else {
hasClicked = YES;
}
}
这只有在 BOOL 被声明为静态时才有意义......
如果有人知道我在说什么并且可以解释这种行为或参考 Apple 在其网站上的解释,我会很高兴。
尼尔斯