ループでは、私は、ユーザーが彼/彼女の設定を入力していない場合、環境設定ウィンドウを読み込むために、次のコードを使用しています。nibが既にロードされているかどうかを確認できますか?
[NSBundle loadNibNamed:@"prefs" owner:self];
私の問題は、毎回ループが新しいウィンドウがするまで何度も何度も開いて実行されることを、窓やペン先が既に一度ロードされているかどうかを確認する方法はありますか?
ありがとうございます! :)
ループでは、私は、ユーザーが彼/彼女の設定を入力していない場合、環境設定ウィンドウを読み込むために、次のコードを使用しています。nibが既にロードされているかどうかを確認できますか?
[NSBundle loadNibNamed:@"prefs" owner:self];
私の問題は、毎回ループが新しいウィンドウがするまで何度も何度も開いて実行されることを、窓やペン先が既に一度ロードされているかどうかを確認する方法はありますか?
ありがとうございます! :)
のではなく、あなたがやっているようペン先の負荷をマイクロ管理、ちょうど使用します。下記のリンクはシングルトンについての例を保持していますサブクラスNSWindowController
を使用して、設定ウィンドウを処理します。 NSWindowController
があなたのためのすべてのnib管理を扱うならば、あなたは窓を表示するために-showWindow:
に電話する必要があります。 NSWindowController
の唯一の実際のトリックは、ペン先のFile Ownerのwindow
アウトレットを確実に接続することです。
クラスをインスタンス化するには、‑initWithWindowNibName:
をペン先の名前で渡します。
前述のIef2が示すように、このオブジェクトはシングルトンとして動作するように構成する必要があります。
PreferencesController
という名前のクラスを作ることができます。要求されたときにそのクラスにペン先をロードし、ウィンドウをivarで保存します。クラスのインスタンスを作成してアクティブ化するたびに、ウィンドウivarがnilであるかどうかを確認します。そうである場合は、ペン先をロードします。そうでない場合は、ウィンドウのキーを作成し、前面を注文します。
ウィンドウの保存に加えて、ユーザーがウィンドウを閉じるときにウィンドウを監視することもできます。彼または彼女がするとき、あなたはあなたのivarを解放して、それをゼロにすることができます。もう一度リクエストすると、ウィンドウがキャッシュされていないことがわかり、ペン先をリロードする必要があります。それはしかし、メモリを節約します。
また、クラスの共有インスタンスを作成することをお勧めします。私はiPod touchを利用しているのでサンプルを入れることはできませんが、すばらしいGoogle検索が本当に役立つはずです。
は、それが助け IEF2
EDITホープ:
[インスタンスが既にロードされている場合、ペン先がロードされないようにする方法](http://stackoverflow.com/questions/4895286/how-to-prevent-a-nib-from-loading-if) - すでにインスタンスにロードされている) –