質問

私の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 あなたが今までに何か観察したことがあるなら)。ここでのエラーは、観察オブジェクトが通知の前に扱われていることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top