Note that there are some explanatory texts on larger screens.

plurals
  1. PONSNotificationCenter removing wrong observers?
    text
    copied!<p>Is there any corner case behaviors for removeObserver:name:object:? In the following block of code, my observer isn't being registered properly:</p> <pre><code>- (void)setPlayerItem:(AVPlayerItem *)playerItem { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:nil object:playerItem]; [playerItem addObserver:self forKeyPath:kStatus options:0 context:(__bridge void*)self]; [playerItem addObserver:self forKeyPath:kPlaybackBufferEmpty options:0 context:(__bridge void*)self]; // For adding a buffering activity indicator id temp = playerItem_; playerItem_ = [playerItem retain]; [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:temp]; [temp removeObserver:self forKeyPath:kPlaybackBufferEmpty]; [temp removeObserver:self forKeyPath:kStatus]; [temp release]; } </code></pre> <p>However, if I change the order around to:</p> <pre><code>- (void)setPlayerItem:(AVPlayerItem *)playerItem { [playerItem addObserver:self forKeyPath:kStatus options:0 context:(__bridge void*)self]; [playerItem addObserver:self forKeyPath:kPlaybackBufferEmpty options:0 context:(__bridge void*)self]; // For adding a buffering activity indicator id temp = playerItem_; playerItem_ = [playerItem retain]; [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:temp]; [temp removeObserver:self forKeyPath:kPlaybackBufferEmpty]; [temp removeObserver:self forKeyPath:kStatus]; [temp release]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:nil object:playerItem]; } </code></pre> <p>All the notifications post just fine. This leads me to believe something strange is happening when I call:</p> <pre><code> [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:temp]; </code></pre> <p>Am I missing something really obvious here? I'm on iOS 6 with no ARC.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload