私のアプリでは、私はこのようなことをしました、
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; //何らかのコード appDelegate = なし;
ただし、アプリは正常に実行され、警告やクラッシュは発生しません。
誰でもこれを説明できますか?ありがとう。
私のアプリでは、私はこのようなことをしました、
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; //何らかのコード appDelegate = なし;
ただし、アプリは正常に実行され、警告やクラッシュは発生しません。
誰でもこれを説明できますか?ありがとう。
最初に をappDelegate
指摘しました[[UIApplication sharedApplication] delegate]
。それからあなたはそれをどこにも向けさせませんでした。しかし[[UIApplication sharedApplication] delegate]
、同じままです。あなたはそれで何もしませんでした。あなたはそれに触れさえしませんでした。
あなたがおそらく考えていることは次のとおりです。
[[UIApplication sharedApplication] setDelegate:nil];
ただし、警告やクラッシュも発生しないはずです。nil に送信されたメッセージは何もしないため、アプリのデリゲート メソッドを呼び出さないだけです。
[[UIApplication sharedApplication] delegate]
は、プロジェクトを作成したときに自動的に作成されたアプリ デリゲートへのポインターを提供します。したがって、appDelegate = nil を設定すると、アプリ デリゲートへのポインタが nil に設定されます。自動的に作成されるアプリ デリゲートには何もしません。
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
この行を使用すると、appDelegate の共有インスタンスが返されます。
[UIApplication sharedApplication]
--- シングルトンへのアクセスを提供します
delegate
メソッドは、アプリ デリゲートへのポインターを返します。そして、すべての作業を終えた後に appDelegate に nil を割り当てたとき。なぜクラッシュするのですか?おそらく、nil 値を割り当てた後にメソッドを呼び出そうとする場合。それはうまくいきません。
アプリのデリゲートではないappDelegate
ポインターを設定しています。nil
このコードを書いた後で[[UIApplication sharedApplication] delegate]
も、 nil
.