MPMusicPlayerController: iPod прекращает отправку уведомлений, когда Приложение iPod прекращает работу в фоновом режиме

Я использую свойство музыкального проигрывателя для контроллера проигрывателя iPod.

// .h
@property (nonatomic, retain) MPMusicPlayerController *ipodPlayer;

// .m
ipodPlayer = [MPMusicPlayerController iPodMusicPlayer];

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];

[notificationCenter addObserver:self selector:@selector(changedPlaybackState:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:ipodPlayer];
[notificationCenter addObserver:self selector:@selector(changedNowPlayingItem:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:ipodPlayer];

[ipodPlayer beginGeneratingPlaybackNotifications];

Во время фоновой обработки, если приложение iPod проигрывателя закрывается, консоль распечатывает:

MediaPlayer: Message playbackState timed out.

Если оно не падает (или зависает, замедление работы), мои методы наблюдения больше не отправляют уведомление. Я все еще могу отправлять сообщения типа:

[ipodPlayer pause];
[ipodPlayer play];
[ipodPlayer skipToNextItem];
[ipodPlayer skipToPreviousItem];

, но не могу получать уведомления

Мои вопросы:

  1. Есть ли способ переназначения, перезагрузки указателей во время выполнения? Как я могу восстановить свойство, чтобы оно было точно так же, как при его первом запуске?
  2. Как я могу перехватить сообщение: «MediaPlayer: Превышено время ожидания воспроизведения сообщения». в выводе консоли? Это не похоже на использование NSLog.

Спасибо за помощь.

ОБНОВЛЕНО: Кажется, что использование assign или слабого для свойства ipodPlayer было решением. Кроме того, доступ к нему осуществляется с предположением, что собственность может отсутствовать. После многих испытаний и года фактического использования его в моем приложении, я думаю, что это было правильное решение.

10
задан petershine 13 December 2011 в 01:53
поделиться