【问题标题】:Stop asynchronous task AVPlayer停止异步任务 AVPlayer
【发布时间】:2016-06-06 20:19:42
【问题描述】:

我正在使用此代码使用 AVPlayer lib 加载视频

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
NSArray *requestedKeys = [NSArray arrayWithObjects:kTracksKey, kPlayableKey, nil];
[asset loadValuesAsynchronouslyForKeys:requestedKeys completionHandler:^{        
    dispatch_async( dispatch_get_main_queue(), ^{
        Do things

如果我进入此视图并快速返回,应用程序会崩溃,因为我在释放我在其中使用的对象后尝试执行其中的代码

有什么方法可以结束这个手动加载值的请求?

【问题讨论】:

  • 嘿,您找到解决方案了吗?我也面临同样的问题。
  • 目前尚不清楚您要完成什么任务。

标签: ios objective-c avplayer


【解决方案1】:

我最终做的解决方案是保留一个布尔值,以显示页面是否仍在加载。

打开- (void)viewDidAppear:(BOOL)animated 我设置了self.loaded = YES;

-(void)viewWillDisappear:(BOOL)animated 上我设置了self.loaded = NO;

所以我对代码做的第一件事就是检查这个

    AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
    NSArray *requestedKeys = [NSArray arrayWithObjects:kTracksKey, kPlayableKey, nil];
    [asset loadValuesAsynchronouslyForKeys:requestedKeys completionHandler:^{        
        dispatch_async( dispatch_get_main_queue(), ^{
            if (!self.loaded) return;
            Do things

希望这对你也有帮助!

【讨论】:

  • 您可以回答自己的问题!这里的信息更多,应该包含在评论中。我只想删除@提及和抱歉行。
猜你喜欢
  • 1970-01-01
  • 2016-07-16
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2012-08-06
  • 1970-01-01
  • 2015-09-19
相关资源
最近更新 更多