【问题标题】:Can't load Quartz animation in screen saver: "You cannot use the XXX screensaver on this computer"无法在屏幕保护程序中加载 Quartz 动画:“您无法在此计算机上使用 XXX 屏幕保护程序”
【发布时间】:2009-12-14 04:19:06
【问题描述】:

我编写了一个简单的屏幕保护程序,它使用 QCView 加载 Quartz 动画。但是当我将它安装在 Snow Leopard 上时,它会出现在屏幕保护程序预览中,并显示一条消息“您无法在此计算机上使用 XXX 屏幕保护程序...”。如果我注释掉 loadCompositionFromFile 行(但保留 Quartz 框架链接),那很好。我也可以单独使用 Quartz 动画作为屏幕保护程序。因此,将 qtz 文件加载到 QCView 中是一个问题。任何想法将不胜感激。

谢谢, 帕特

【问题讨论】:

  • 预览屏幕保护程序时是否出现任何控制台消息?
  • 不,恐怕不会。我在控制台上看到的唯一消息是一些关于首选项的警告。谢谢。

标签: cocoa osx-snow-leopard quartz-graphics screensaver quartz-composer


【解决方案1】:

您是否在不支持 GC 的情况下进行构建?在 Snow Leopard 上以 64 位运行时,屏幕保护程序引擎会以垃圾收集方式运行。

请参阅QA1666 了解完整的要求。

请注意,即使您只支持 Snow Leopard,如果您想使用像 SaverLab 这样的测试应用程序,您仍然应该在非发布构建配置中构建支持 GC 或不支持(非必需)的 32 位 GC。

另外,您在 QCView 中托管 Quartz Composition 是否有原因?屏幕保护程序可以直接处理 Quartz Composition。

【讨论】:

  • 我只为 64 位架构构建,并将 objc gc 设置为“必需”......但显然不是我的代码导致了错误,而是它链接的石英代码。加载屏幕保护程序时不会出现“您不能使用...”消息,如该文档中所示,而仅作为预览屏幕上的文本出现...显然它是在屏幕保护程序开始执行后决定的它会尝试加载 QTZ 文件。 (这是一条相同的消息,但在我的情况下仅在运行后的预览中显示,而不是阻止您加载/选择的下拉消息。
  • 我可以通过将 obj-c GC 设置为不支持来重现文档讨论的问题,然后在加载我的保护程序时收到该下拉消息。所以我认为这不幸与我如何编译我的代码无关,而是与 Quartz 链接或我的 QTZ 文件的生成方式有关......
  • 在回答您的问题时,我使用屏幕保护程序 API 的原因是我想在退出屏幕保护程序时启动应用程序。它只是带有这个退出钩子的 QCView 的简单包装器。是的,我意识到有屏幕保护程序退出的通知,但我希望最终用户可以轻松安装它(不必运行守护程序)。谢谢。
【解决方案2】:

我的猜测是 32 位二进制文​​件被馈送到 64 位进程,反之亦然。

【讨论】:

  • 是的,但是我的屏幕保护程序正在编译为 64 位目标,并且在没有石英动画的情况下运行良好。我环顾四周,但在 Quartz Composer 上没有看到任何用于输出 QTZ 文件的选项...
  • 您已经尝试过为 32 位寻址编译它了吗?
  • 好吧,我对 XCode 不是很熟悉,但是在选择 i386 和 x86_64 作为“活动架构”之后,我尝试过干净构建屏幕保护程序。除此之外,我还没有深入研究构建设置。我确实查看了 /Library/System/Frameworks 以查看是否有不同版本的 Quartz Framework 用于链接……但我只看到一个。也重申一下 - 如果我不将 QTZ 文件加载到 QCView 中,屏幕保护程序运行正常。 QTZ 文件本身作为屏幕保护程序运行就很好......所以这很奇怪。谢谢。
  • 也许为您的第一个项目尝试一些更简单的方法。
  • a) 有点刻薄? :) b) 我的意思是我并不熟悉每个 obj-c 构建选项、框架链接问题和 Snow Leopard 怪癖,(你是吗?) c) 这实际上正是新手可能尝试的那种项目...在 XCode 生成的模板 ScreenSaver 项目中添加了大约 3 行代码。这显然是与 Quartz 相关的某种问题,这似乎是一个有效的问题,而且还不是很明显,因为它仍然没有答案:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
相关资源
最近更新 更多