ここで「懸念」を引き起こしているものを手に入れました...
キーボードを使用するモーダル ビュー コントローラーがあります。私はシステムを使用して、キーボードの外側のタップを認識してそれを却下する「新しい方法」であるように見えるstackoverflowのコードからキーボードを却下しています...
// Register for keyboard dismissal
[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillShowNotification object:nil queue:nil usingBlock:^(NSNotification *notification)
{
UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard:)]autorelease];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
tap.delegate = self;
[self.view addGestureRecognizer:tap];
}];
[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillHideNotification object:nil queue:nil usingBlock:^(NSNotification *notification)
{
[self.view removeGestureRecognizer:[self.view.gestureRecognizers lastObject]];
}];
これはうまく機能しますが、[完了] ボタンでビュー コントローラーを閉じると、ビュー コントローラーで dealloc が呼び出されないことに気付きました。
上記のコードと関係があるようです。通知定義の中かっこ内の実行可能コードをコメント アウトすると、コントローラーが閉じられたときに dealloc が呼び出されます (キーボードが表示されていないか、閉じられていないため、中かっこ内のコードは実行されません)。
上記のコードが実装されているときに dealloc が呼び出されない理由について、何か提案はありますか?
ありがとう
合う