nsnotificationCenterセレクターは呼び出されていません
-
02-10-2019 - |
質問
私のiPadアプリでは、1つのクラスで通知に登録します。
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(selectedList:) name:@"TTSelectedList" object:nil];
私の selectedList:
方法は次のようになります:
- (void)selectedList:(NSNotification*)notification
{
NSLog(@"received notification");
}
次に、別のクラスで(a UITableViewController
)行が選択されたときにその通知を投稿します。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"posting notification");
[[NSNotificationCenter defaultCenter] postNotificationName:@"TTSelectedList" object:nil];
}
「通知の投稿」がコンソールにログに記録されているが、「通知」は呼び出されないため、通知が投稿されていることを確認できます。つまり、通知は受け取られておらず、セレクターは呼び出されていません。何が原因であるのかわからない。
ありがとう
解決
最も可能性の高い原因は、あなたが実際に電話していないことです addObserver:selector:name:object:
. 。そこにロギングラインはありません。コードが実行されていると確信していますか?
2番目に可能性の高い原因は、あなたが呼んでいることです removeObserver:
通知が投稿される前。これは最も一般的です dealloc
(これは必要です いつも 電話 removeObserver
あなたが今までに何か観察したことがあるなら)。ここでのエラーは、観察オブジェクトが通知の前に扱われていることです。
所属していません StackOverflow