
我有一个像这样运行的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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)