差分
インスタンス
,'''NoxPlayerインスタンス'''とは、([[Windows英語]]および[[macOS]]で動作する[[Android]][[エミュレーター]]である。:instance)とは、「実体」のことである。
このため多くの[[category:Androidエミュレータープログラマー]]が「多重起動防止する方法」を調べるのが定番となっている。 === AndroidやiOS ===[[Android]]や[[iOS]]はシングルインスタンスが基本となっている。[[スマホ]]という特性上こちらのほうが使い勝手がいいからだ。 このため多くの[[ゲーマー]]がチートするために「マルチインスタンス化する方法」を調べているようだ。 == プログラミング ==[[構造体]]や[[クラス]]の定義をもとに、[[メモリ]]を確保し、初期化処理までを完了したものを「インスタンス」とをいう。 この挙動は[[Objective-C]]がわかりやすい。Objective-Cではメモリ確保(alloc)と初期化(init)の2挙動を明示的に行うようになっている。<syntaxhighlight lang="objective-c">Class* instance = [[Class alloc] init];</syntaxhighlight> Objective-C以外の多くの[[言語]]では「new」とするだけで一発で行うことができる。このような場合でも内部的にはメモリ確保(alloc)と初期化(init)は別々に実行されている。<syntaxhighlight>Class instance = new Class();</syntaxhighlight> ここで注意しなければならないのは「newであっても、内部は2挙動であり、その2挙動は連続実行されるとは限らない」という点である。 たとえば[[C#]]ではその2挙動は連続実行される。一方で[[Java]]ではnewすると即座にメモリ確保だけは行われるが、初期化はそのインスタンスの「最初の利用時」に実行される。<syntaxhighlight lang="java">// newでメモリ確保が実行されるClass instance = new Class(); // 初回は初期化(コンストラクタ)が実行されたのちHelloメソッドが実行される。instance.Hello(); // 2回目は普通にHelloメソッドだけ実行される。instance.Hello(); </syntaxhighlight>この挙動によりJavaでは[[ダブルチェックロッキング]]が実装できない。 == 関連項目 ==* [[副作用]]* [[自己参照]]* [[関数ポインタ]]