EDIT:. After posting the answer below, I noticed that whenever the controller was redistributed, errors returned because the old controller was automatically freed up, even if I myself had created absolutely no notification handlers. Since errors come from code inside the MP framework, I would say that this seems to be an OS error.
I ran into the same issue with a storyboard-based iOS 5 project using ARC. The problem is using a temporary variable on the stack to access the movie controller - in my case, I assumed interacting with ARC, but this could be more fundamental. In any case, it seems that something is being freed / lost too early (for example, when a playback error occurs), and the log is filled with the description that you are describing.
Saving a reference to the movie controller in a property defined in the ownership class solved this in my case; i.e:
@interface MyClass @property ( strong, nonatomic ) MPMoviePlayerViewController * movieController; @end @@implementation MyClass @synthesize movieController = _movieController; // ...then later, this: // // MPMoviePlayerController *moviePlayerController = [...]; // // ...becomes: self.movieController = [...];
If you use synthesized accessors for this property, then if you use manual or automatic reference counting, the generated setter method must correctly release the old video controller (if any) before setting up a new one.
As a footnote, if you (say) the dealloc / 'unreference' (set-to-nil) property is manually in the MPMoviePlayerPlaybackDidFinishNotification notification MPMoviePlayerPlaybackDidFinishNotification , then you will probably notice that errors are returned. So do not do this :-)
source share