Objective c 是否使用[self-retain]向NSNotificationCenter添加一次性观察者?

Objective c 是否使用[self-retain]向NSNotificationCenter添加一次性观察者?,objective-c,memory-management,Objective C,Memory Management,在设计组件的过程中,我需要一个通知的“一次性”处理程序。我有一个对象,它只对通知响应一次,然后它应该删除自己。我的对象已用自动释放初始化,无法更改。下面的模式能够实现这一点吗 - (void) init { [[NSNotificationCenter defaultCenter] addObserver:[self retain] selector:@selector(doRespond)

在设计组件的过程中,我需要一个通知的“一次性”处理程序。我有一个对象,它只对通知响应一次,然后它应该删除自己。我的对象已用自动释放初始化,无法更改。下面的模式能够实现这一点吗

- (void) init 
{
    [[NSNotificationCenter defaultCenter] addObserver:[self retain]
                                             selector:@selector(doRespond)
                                                 name:@"someNotification"
                                               object:nil];
}

- (void) doRespond 
{
    [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                    name:@"someNotification" 
                                                  object:nil];
    // do something
    [self release];
}

乍一看,这是正确的做法。

谢谢,很高兴有人增援。如果遇到任何问题,请发回!)我将协商这个问题的“关闭”决定:以这种方式处理通知可能是一种有用的模式。至少值得讨论一下。