【问题标题】:-[AVPlayerViewController retain]: message sent to deallocated instance-[AVPlayerViewController 保留]:发送到已释放实例的消息
【发布时间】:2016-10-21 10:26:03
【问题描述】:

我正在尝试将AVPlayerViewController 添加到聊天气泡中,以便收到的任何音频或视频消息都可以直接在聊天气泡中播放。我的UITableView 列表包含许多这样的气泡。但是当我尝试滚动表格视图时,应用程序崩溃显示 -[AVPlayerViewController retain]: message sent to deallocated instance.

下面是我为每个聊天气泡添加AVPlayerViewController 对象的代码:-

_playerViewController = [[AVPlayerViewController alloc] init];
_playerViewController.player = [AVPlayer playerWithURL:url];
_playerViewController.view.frame = CGRectMake(10.0, 5.0, 190.0 , 90.0);  //   self.view.bounds;
_playerViewController.showsPlaybackControls = YES;

[_playerViewController.view setTranslatesAutoresizingMaskIntoConstraints:YES];
[_playerViewController .view setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin];
[cell.contentview addsubview:_playerViewController.view];

url 包含文件路径(音频/视频),我正在尝试将_playerViewController 对象添加到UITableView 单元格的内容视图,但它会引发上述错误。谁能告诉我我应该怎么做。

【问题讨论】:

    标签: ios objective-c retain avplayerviewcontroller uibubbletableview


    【解决方案1】:

    每个单元格都不应包含AVPlayerViewController。太可怕了!

    你应该管理你的东西,就像每个单元格只显示你的视频的缩略图一样,你应该管理视频的 URL 数组。现在使用 common AVPlayerViewController 播放任何视频。我的意思是当用户点击单元格或单元格的播放按钮然后将该网址传递给播放器并播放视频!

    【讨论】:

    • 感谢您的建议。能否请您告诉我播放音频文件的逻辑。
    • @Lion-我应该用同一个播放器播放音频文件吗?
    • 您可以创建一个创建和播放视频的操作方法(类似于您在问题中显示的代码)。然后单击按钮或在didselectrow 中将选定的视频网址传递给这些方法并创建 AVPlayerViewController 并播放视频!
    猜你喜欢
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2011-07-15
    相关资源
    最近更新 更多