2

我正在创建一个音乐教育应用程序,它可以读取乐谱 - 而不是音频文件 - 并且需要呈现一个动画图形屏幕。我创建了一个基于文档的应用程序来轻松访问文件,现在我让它读取和解析文件,并且我将所有歌曲数据存储在我的 Obj-C 类中。我的 xib 中还有一个 textview,我可以在其中写入歌曲属性和其他文本花絮。现在我想要第二个视图,它需要图形化和动画化,用于音乐。我是 Xcode 新手,但有一些 openGL 经验。我的设置是最新的操作系统和 Xcode 版本。

当我尝试将 OpenGL 视图拖到 IB 中的窗口中时,我收到一个奇怪的错误/警告,上面写着“不支持的配置 - 启用 One Shot 内存的窗口中的 NSOpenGLView”(这很奇怪),并且当我运行应用程序。

我在此站点或其他任何地方的 NSdocuments 中找不到太多对 OpenGL 视图的引用,这让我觉得我可能正在尝试做一些不应该做的事情。有人对我有什么建议吗?我不应该使用基于文档的应用程序吗?我应该使用openGL以外的东西吗?或者,在这种情况下,也许我需要 100% 以编程方式构建 openGL 视图和视图控制器?对一些适用的示例/教程的任何建议或指示都会有很大的帮助。

4

1 回答 1

3

尝试在 Interface Builder 的 Windows 内存属性中禁用“One Shot”选项。

从 NSWindow 文档:

setOneShot:设置窗口管理的窗口设备从屏幕列表中删除时是否应释放。

- (void)setOneShot:(BOOL)oneShot

参数

oneShot YES 当它从屏幕列表中删除(隐藏)时释放窗口的窗口设备,并在它返回屏幕时创建另一个;否以重用窗口设备。

讨论

当窗口设备从屏幕列表中删除时释放窗口设备可以节省内存并提高 NSWindow 对象的性能,这些对象不需要很长时间才能显示。它特别适用于用户可能使用一次或两次但不会持续显示的 NSWindow 对象。

于 2013-12-09T07:43:34.507 回答