1

我是 Objective-C 的新手,这个兼容性问题MTKView真的让我很困惑。

我有一个视图类,以前是这样的,

@interface MyView : NSView
@end

@implementation MyView

// A lot of implementations

@end

我现在正在尝试使用 Metal 来刷新MyView. 使用MTKView,在 macOS 上定义为

@interface MTKView : NSView

我将代码更改为

@interface MyView : MTKView
@end

我用最新的 SDK 编译了我的代码,所以它在编译时不会有任何问题。

我的问题是,

  1. 由于MTKView仅在 macOS 10.11+ 上受支持,如果我在操作系统版本低于 10.11 的设备上运行此代码会发生什么情况?我认为它可能不起作用,因为这些设备在运行时一无所知MTKView。但是,Apple 能否神奇地考虑到这个问题,并让它在我的代码编译时像 NSView 一样在旧设备上运行?

  2. 如果它不适用于旧操作系统版本的设备,我该怎么做才能在没有任何兼容性问题的情况下实现这一目标?解决这种兼容性问题的常用方法是什么?它应该像这样工作,但我认为运行时继承不是一回事。

// Just to show how it should work
if (Is_10_11_Or_Above())
    @interface MyView : MTKView
else
    @interface MTKView : NSView
4

0 回答 0