2011-07-18 14 views
1

私はココアプロジェクトに問題があります。私はNSButtonsで構成されたキーボードを表示しています。キーの1つをクリックすると、ラベルがNSTextFieldに追加されます。私はシングルトンとして使用するコントローラを持っているので、各キーはコントローラにアクセスする方法を「知っている」。コントローラには、NSTextFieldにリンクされたアウトレットがあります。キーをクリックすると、何も起こりません。だから私はのようなものをmouseDownイベントで使用し、コンソール出力では(null)を取得します。私の店舗はなぜnilですか?

かいつまんで、私の出口はnilに設定されている、と私はそれがそのようである理由がわからない、またはそれを解決する方法...

ここでは、コントローラのコードです:https://gist.github.com/1090564が。シンタックスカラーリングがありません。

みんな読んでくれてありがとう!

答えて

4

私の推測では、あなたが実際に期待しているものの代わりに、複数のOakControllerのインスタンスを実際に持っていると思います。青色のキューブをIB文書にドラッグしてカスタムクラスをOakControllerに変更しましたか?それは毎回新しいオブジェクトを割り当て、初期化します。私はあなたのsharedInstanceメソッドもインスタンスを割り当てて初期化すると思います。

awakeFromNibメソッドをOakControllerに追加し、ブレークポイントを追加してください。自己のポインタ値を記録します。あなたの2番目のケースでは、アウトレットは予期せぬことであり、また自己のポインタアドレスを記録していませんでした。

+0

私は青いキューブをドラッグしてクラスを変更しました。そしてもう一度、私はawakeFromNibから2つの異なるポインタ値を取得し、もう1つはキーをクリックすると – ksol

+0

これはほぼ正しいです。 – Chuck

+1

@Katen:それであなたの店舗は無名です:あなたは2つの異なるオブジェクトを持っています。あなたのペン先のオブジェクトには、コンセントが設定されています。あなたのペン先以外のオブジェクトでは、そうではありません。 – Chuck