• ベストアンサー

cocoa?のawakeFromNibが呼ばれる順番

ご存知の方教えていただきたいのですが、 awakeFromNibの呼ばれる順番はやはり、どうやっても指定することは出来ないのでしょうか? 原因はわからないのですが、順番が入れ替わりエラーになってしまったりします。 awakeFromNibは使わずに他の方法を考えた方がよいのでしょうか? 例えばawakeFromNibは一つにしてawakeFromNibから他の初期化するメソッドを呼ぶとか.. 教えていただけますか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yukimican
  • ベストアンサー率70% (112/159)
回答No.2

すみません。勘違いしていました。 複数のオブジェクト間でawakeFromNibの順番が入れ替わるということですね。 残念ながら、各オブジェクトがどのような順番でawakeFromNibされるかはわかりません。 カスタムビューでなければ、バインディングで対処できるかもしれません。 あとは、以下のどれかで対処可能だとは思います。(よく使われるのは(a) (a) awakeFromNibではなく、applicationDidFinishLaunchingで対処 (b) awakeFromNibに二重呼び出し防止のフラグを設けた上で、  他のオブジェクトからawakeFromNib(又は初期化メソッド)を呼び出す (c) ダミーの依存関係(アウトレット)を作り、初期化の順序を制御する (試したことは無いので、うまく動くかは保障できません

psychesine
質問者

お礼

ありがとうございます!! 試してみます。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yukimican
  • ベストアンサー率70% (112/159)
回答No.1

MacOSXの話ですよね。 OSバージョンは10.4の最新版ですか? 状況がよくわからないのですが、何とawakeFromNibの順番が入れ替わるのですか? おそらくinitWithXXXとawakeFromNibのことを言っているのだとは思いますが。 もう少し状況を詳しく書くと、的確な回答ができるかもしれません。

psychesine
質問者

お礼

ありがとうございます。スミマセンOSX最新です。 幾つかのクラスをIBでインスタンス化して、インスタンス同士でデータを受け渡す場合、awakeFromNib内でデータを用意して渡しているのですが awakeFromNibされる順番が変わる前は正常で 順番が入れ替わったとき、awakeFromNibでデータが用意される前に 他のインスタンスでawakeFromNibによってデータの要求メソッド(NULLが返される)で エラーになってしまいます。 こういう処理の定番があるのでしょうか? スミマセンよろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A