0

私には3つの方法があります:

- (void)viewDidAppear:(BOOL)animated
{
    [self updateViews];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:@"itemQuantityChanged" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:[NSString stringWithFormat:@"Item %@ deleted", itemUUID] object:nil];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void) receiveNotification: (NSNotification *)notification
{
    if ([[notification name] isEqualToString:@"itemQuantityChanged"])
        [self updateViews];
    if ([[notification name] isEqualToString:[NSString stringWithFormat:@"Item %@ deleted", itemUUID]])
        NSLog(@"FAIL!");
}

主なアイデアは、このクラスでは 2 つの異なる通知を受け取る必要があり、それらを受け取った場合は異なるアクションを実行する必要があるということです。実現は大丈夫ですか?このコードを単純化することは可能だと思います。removeObserver正しくするには?ARCは使いません。

4

1 に答える 1

2

通知ごとに異なるセレクターを使用する必要があります。そうすれば、どの通知が送信されたかを判断するためにメソッドにロジックは必要ありません。

あなたがやっているようにオブザーバーを削除しても問題ありません。

于 2013-08-22T05:51:54.477 に答える