0

これは熟考するほどの質問ではありません-NSNotificationCenterがリリースされたときに例外をスローするのはなぜですか?私はまだiPhoneの開発に慣れていないので、Cocoaの内部はまだわからないので、その理由を理解しておくとよいでしょう。

defaultCenterを変数に割り当て、addObserver :selector:name:objectを呼び出してから前の変数を解放していますが、[notifyrelease]を呼び出すとアプリがクラッシュします。私はコードで奇妙なことを何もしていないので、なぜそれがこれを行っているのかを正確に知ることは興味深いでしょう。

誰かがこの問題に遭遇しましたか?

4

4 に答える 4

5

NSNotifcationについて私が知っていることから、defaultcenterを変数に割り当てるのではなく、次のようなことを行う必要があります。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLogin) name:@"IncorrectLogin" object:nil];

そのスニペットでは、デフォルトセンターを呼び出し、特定のメッセージの現在のオブジェクトを登録します。

次に、通知センターにメッセージを投稿するには、次を使用できます。

[[NSNotificationCenter defaultCenter] postNotificationName:@"IncorrectLogin" object:nil];

私はすべてのコードで上記を使用しており、問題はありません。

于 2010-06-21T16:53:16.917 に答える
2

アプリのデフォルトの通知センターは1つだけである必要があるため、どのクラスもそれを保持または解放してはなりません。あなたはあなたの通知センターがあなたの上に消えてほしくないでしょう?

于 2010-06-21T16:52:35.510 に答える
1

私はあなたがそのオブジェクトを所有しているとは思わないので、それを解放すべきではありません。

NARCを覚えておいてください:新しい割り当て、保持、コピー。これらのいずれかを行う場合は、それを解放する必要があります。

于 2010-06-21T16:52:56.773 に答える
0

リリースするのはあなたではありません。

NARCのルールを覚えておいてください。リリースするのは、以下を使用して実現したものだけです。

新しい割り当て保持、またはコピー。

NARC。見る?

NSNotificationCenterで行っているのは、デフォルトの通知センターを表すシングルトンのコピーを取得していることです。シングルトンについて読む価値があるでしょう。

于 2010-06-21T18:45:31.147 に答える