cocoa - 为什么 QTMovieLoadStateDidChangeNotification 没有触发?

标签 cocoa qtkit

我发现在 QTMovieLoadStateDidChangeNotification 上设置通知没有效果,并且目标选择器永远不会被调用。我错过了什么吗?

在 awakeFromNib 中:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(movieLoadStateDidChange:)
                                             name:QTMovieLoadStateDidChangeNotification
                                           object:nil];

加载电影时:

NSNumber *num = [NSNumber numberWithBool:YES];
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
 url, QTMovieURLAttribute,
 nil];

self.mQTMovie1 = [[QTMovie alloc] initWithAttributes:attributes
                                               error:&error];

还有

- (void)movieLoadStateDidChange:(NSNotification *)notification {
NSLog(@"movieLoadStateDidChange got called");
}

最佳答案

我不确定这就是答案,但我以前遇到过这种情况。在我的例子中,原因是一个文件的编解码器仅受第三方插件支持(在我的例子中是 Flip4Mac)。

直到电影自动播放(无处播放)结束后才会调用加载状态通知。对于长媒体文件,实际上看起来永远不会调用通知,因为在测试代码时我们很少等待 5 分钟或一个小时来等待加载通知。对于用户来说,应用程序似乎根本没有加载文件。

让用户在系统偏好设置中禁用插件的自动加载播放功能可以解决该问题,但不幸的是,我无法绕过这一支持常见问题解答,因为相关应用程序的用户经常使用 Flip4Mac 来支持来自常见数字的文件录音机。

关于cocoa - 为什么 QTMovieLoadStateDidChangeNotification 没有触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349353/

相关文章:

macos - NSOutlineViewDataSource 和 swift

Cocoa 结构体和 NSMutableArray

具有非零 `contents` 的 QTMovieLayer 的 iOS 替代品?

objective-c - 如何从代码中定义绑定(bind)的对象访问 Cocoa IB 绑定(bind)?

macos - 无法更改 NSTextField 的鼠标光标

objective-c - 孤立的核心数据对象没有被销毁

macos - 如何预定义 Apple Script 常量或变量

cocoa - QTKit,捕获视频以进行直播

macos - OSX 10.8 中的 AVKit

cocoa - 以编程方式将 mp3 解码为 wav 的简单方法?