iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – AVPlayer删除periodicTimeObserver大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在阻止AVPlayers时间观察者时遇到困难.

我有一个像这样运行的AVPlayer播放器:

player = [[AVPlayer alloc] initWithURL:[NSURL fileURLWithPath:path]];

然后我添加一个观察者

[player addPeriodicTimeObserverForInterval:CMTimeMake(3,10) queue:NULL usingBlock:^(CMTime time){
        NSTimeInterval seconds = CMTimeGetSeconds(time);
    NSLog(@"observer called");
        for (NSDictionary *item in robotR33) {
            NSNumber *time = item[@"time"];
            if ( seconds > [time doubleValue] && [time doubleValue] >= [lastTime doubleValue] ) {
               // NSLog(@"LastTime: %qi",[lastTime longLongValue]);
                lastTime = @(seconds);
                NSString *str = item[@"line"];
                [weakSelf nextLine:str];
               // NSLog(@"item: %qi",[time longLongValue]);
               // NSLog(@"Seconds: %f",seconds)
            };
        }
    }];
    [player play];

一旦我完成了播放器,我就这样做了:

[player pause];
[player removeTimeObserver:self.timeObserver]
player = nil;

奇怪的是,当我在代码中放置断点并使用XCode逐步执行代码时,它可以工作.我可以看到块停止打印出“观察者代码

但是当我在没有断点的情况下正常运行代码时,我可以看到在调用[player removeTimeObserver]之后观察者仍然以相同的间隔运行.

有任何想法吗?

解决方法

很高兴看到weakSelf为你工作……

在上面我没有看到你分配结果

[player addPeriodicTimeObserverForInterval ...

to self.timeObserver它可能是一个错字但它应该是;

self.timeObserver =  [player addPeriodicTimeObserverForInterval ...

如果你打算打电话

[player removeTimeObserver:self.timeObserver];

你也错过了“;”以上.

大佬总结

以上是大佬教程为你收集整理的ios – AVPlayer删除periodicTimeObserver全部内容,希望文章能够帮你解决ios – AVPlayer删除periodicTimeObserver所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: