2

プロジェクトが非常に大きいため、ここに関連するコードを含めることができるかどうかはわかりませんが、NSLog1回の呼び出し/エラーのみが発生しているときに警告と呼び出しを繰り返す一般的な理由はありますか?

NSBox例として、次のクラスのインスタンスを初期化するサブクラスがありawakeFromNibます。

- (void) awakeFromNib {
    burbControllerInstance = [[BurbController alloc] init];
    if (burbControllerInstance) {
        NSLog(@"init ok");
    }
}

「 initok NSLog」を2回出力します。このサブクラスがプロジェクトのどこかで2回「目覚めた」理由がわかりません。nilこれは、インスタンスを作成しているクラス以外のものを返す変数を取得できないという、より大きな問題の一部です。おそらく二重の値がそれと関係があるのだろうかと思います。

4

1 に答える 1

3

この投稿は役立つ可能性があります。つまり、1つのコメントです。

また重要です。複数のペン先に同じコントローラーを使用している場合、コントローラーでawakeFromNibを複数回呼び出すことができます。たとえば、アプリの[バージョン情報]ダイアログと[設定]ダイアログの両方の所有者としてアプリデリゲートを使用している場合です。したがって、nibオブジェクトの初期化以外の目的でawakeFromNibを使用する場合は、追加のガードテストが必要になります。

更新:これももっと興味深いかもしれません。著者は、これが2回awakeFromNib呼び出されると述べています。残念ながら、この特定の問題に対する本当の答えはありませんが、おそらくいくつかの基本的なアイデアがあります。

アップデート#2: stackoverflow.comからの別の潜在的な解決策:ViewControllerはawakeFromNibを2回呼び出します。

于 2011-04-30T20:37:47.650 に答える