我想弄明白obj-c/cocoa touch
和AVPlayer
。我可以毫无问题地构建和播放AVQueuePlayer
。
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject: [self buildPlayerItem:@"http://<some url>first.mp3"]];
[items addObject: [self buildPlayerItem:@"http://<some url>second.mp3"]];
self.queuePlayer = [[AVQueuePlayer alloc] initWithItems:items];
我可以在advanceToNextItem
上调用播放,暂停,currentItem
和self.queuePlayer
,但是对[self.queuePlayer status]
方法的任何调用或尝试访问self.queuePlayer.status
属性都会导致该应用程序抛出EXC_BAD_ACCESS
错误。我在尝试获取queuePlayer的currentItem状态时遇到了同样的问题。
我的理解是这个错误表明我正在尝试访问已释放的对象的属性,但是
1)我正在使用ARC 2)self.queuePlayer似乎不可能被释放,因为我可以在其上调用play,和 3)status是self.queuePlayer的一个属性,而不是我自己的一个类中的属性,所以AVQueuePlayer实现中的某些东西可能是管理状态变量。
答案 0 :(得分:0)
事实证明AVPlayer
的状态属性是一个int ...我原以为它是NSString
或更复杂的东西。所以问题不是引用一个释放的对象,而是使用%@打印一个int。