title: An AVPlayerItem cannot be associated with more than one instance of AVPlayer in iOS 8.4
body: <p>After updating to iOS 8.4 I am getting the infamous exception with <code>MPMoviePlayerController</code> that says:</p>
  
  <p><strong>An AVPlayerItem cannot be associated with more than one instance of AVPlayer</strong> </p>
  
  <p>I have seen several workarounds that mainly consist of reinitialising the player before reusing it. However, for me the crash doesn't happen when I try to play a new video, but rather when I turn off fullscreen for the player by rotating to portrait mode.</p>
  
  <p>This is my code:</p>
  
  <pre><code>@implementation MoviePlayerViewController
  
  -(void)viewDidLoad
  {
      [super viewDidLoad];
  
      self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
  
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerWillEnterFullscreenNotification:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerWillExitFullscreenNotification:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
  }
  
  - (void) moviePlayerWillEnterFullscreenNotification:(NSNotification*)notification
  {
      [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange) name:UIDeviceOrientationDidChangeNotification object:nil];
  }
  
  - (void) moviePlayerWillExitFullscreenNotification:(NSNotification*)notification
  {
      [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
      [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
  }
  
  - (void)deviceOrientationDidChange
  {
      UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
      if (orientation == UIDeviceOrientationPortrait) {
          [self.moviePlayer setFullscreen:NO animated:YES];
      }
  }
  
  @end
  </code></pre>
  
  <p>The change to fullscreen happens in the <code>UIViewController</code> that has the <code>MoviePlayerViewController</code> as u subview:</p>
  
  <pre><code>-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
  {
      if (!self.moviePlayerViewController.moviePlayer.fullscreen &amp;&amp;
          UIInterfaceOrientationIsPortrait(fromInterfaceOrientation)) {
              [self.moviePlayerViewController.moviePlayer setFullscreen:YES animated:YES];
      }
  }
  </code></pre>
  
  <p>There is no problem when I go in or out of fullscreen manually using the fullscreen-button in the player. Also I can rotate the player into fullscreen just fine. However, when I try to rotate it out of fullscreen (i.e. from landscape to portrait) I get the exception, seemingly in the line:</p>
  
  <pre><code>[self.moviePlayer setFullscreen:NO animated:YES];
  </code></pre>
  
  <p>Here is my stack trace when the exception occurs:</p>
  
  <pre><code>Thread : Fatal Exception: NSInvalidArgumentException
  0  CoreFoundation                 0x00000001865e02d8 __exceptionPreprocess
  1  libobjc.A.dylib                0x0000000197f3c0e4 objc_exception_throw
  2  AVFoundation                   0x0000000184db4b50 -[AVPlayerItem _attachToFigPlayer]
  3  AVFoundation                   0x0000000184da7770 -[AVPlayer _attachItem:andPerformOperation:withObject:]
  4  AVFoundation                   0x0000000184dc8f00 -[AVQueuePlayer insertItem:afterItem:]
  5  MediaPlayer                    0x00000001889d1d30 -[MPQueuePlayer insertItem:afterItem:]
  6  MediaPlayer                    0x000000018893de7c -[MPAVQueueCoordinator _syncPlayerItems]
  7  MediaPlayer                    0x000000018893d8a4 -[MPAVQueueCoordinator _syncItems]
  8  MediaPlayer                    0x000000018893c68c -[MPAVQueueCoordinator reloadItemsKeepingCurrentItem:]
  9  MediaPlayer                    0x000000018899fd38 -[MPAVPlaylistManager setPlaylistFeeder:startIndex:keepPlaying:]
  10 MediaPlayer                    0x000000018899fb4c __67-[MPAVPlaylistManager reloadWithPlaybackContext:completionHandler:]_block_invoke
  11 MediaPlayer                    0x000000018889fa5c -[MPArrayQueueFeeder reloadWithPlaybackContext:completionHandler:]
  12 MediaPlayer                    0x000000018899f9b4 -[MPAVPlaylistManager reloadWithPlaybackContext:completionHandler:]
  13 MediaPlayer                    0x00000001888b7550 -[MPAVController reloadWithPlaybackContext:completionHandler:]
  14 MediaPlayer                    0x000000018888d114 -[MPMoviePlayerControllerNew _prepareToPlayWithStartIndex:]
  15 MediaPlayer                    0x000000018888a988 -[MPMoviePlayerControllerNew _moviePlayerDidBecomeActiveNotification:]
  16 CoreFoundation                 0x00000001865862c4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
  17 CoreFoundation                 0x00000001864c3450 _CFXNotificationPost
  18 Foundation                     0x00000001873f2a80 -[NSNotificationCenter postNotificationName:object:userInfo:]
  19 MediaPlayer                    0x000000018888d530 -[MPMoviePlayerControllerNew _postNotificationName:object:userInfo:]
  20 MediaPlayer                    0x000000018888d494 -[MPMoviePlayerControllerNew _postNotificationName:object:]
  21 MediaPlayer                    0x00000001888878dc -[MPMoviePlayerControllerNew setFullscreen:animated:]
  22 myApp                          0x000000010004ddf8 -[MoviePlayerViewController deviceOrientationDidChange] (MoviePlayerViewController.m:36)
  23 CoreFoundation                 0x00000001865862c4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
  24 CoreFoundation                 0x00000001864c3450 _CFXNotificationPost
  25 Foundation                     0x00000001873f2a80 -[NSNotificationCenter postNotificationName:object:userInfo:]
  26 UIKit                          0x000000018b059b34 -[UIDevice setOrientation:animated:]
  27 UIKit                          0x000000018b0597f0 -[UIApplication handleEvent:withNewEvent:]
  28 UIKit                          0x000000018b059080 -[UIApplication sendEvent:]
  29 UIKit                          0x000000018b0c52c4 _UIApplicationHandleEvent
  30 GraphicsServices               0x000000018fdc9194 _PurpleEventCallback
  31 GraphicsServices               0x000000018fdc8c84 PurpleEventCallback
  32 CoreFoundation                 0x0000000186597a54 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
  33 CoreFoundation                 0x00000001865979b4 __CFRunLoopDoSource1
  34 CoreFoundation                 0x0000000186595934 __CFRunLoopRun
  35 CoreFoundation                 0x00000001864c12d4 CFRunLoopRunSpecific
  36 GraphicsServices               0x000000018fdc76fc GSEventRunModal
  37 UIKit                          0x000000018b0bef40 UIApplicationMain
  38 myApp                          0x000000010002b2dc main (main.m:16)
  39 libdyld.dylib                  0x00000001985e6a08 start
  </code></pre>