少なくとも私にとっては、マウス処理イベントで 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 の説明を参照できる人がいれば、私はうれしいです。
ニールス