【发布时间】:2018-08-15 07:06:44
【问题描述】:
我对 Objective-c 很陌生,所以请耐心等待,我仍在尝试理解可以在 Objective-c 中放置属性和类变量的众多位置。
我是一位经验丰富的 Metal 开发人员,但我几乎没有使用过 Objective-c。
我正在尝试创建一个 MetalCore 类来保存 MTLDevice、MTLCommandQueue 并促进应用程序核心管道等的创建。
因此我定义了以下内容
@property (readonly, nonatomic, assign) MTLDevice* devicePtr;
然而,在我的课堂上我得到了错误Unknown type name MTLDevice; did you mean...,即使我是#import <Metal/Metal.h>,那么这里发生了什么?
我查看了堆栈溢出,发现人们定义这样的函数的示例
- (<MTLDevice> *)device;
或
- (instancetype)initWithDevice:(id<MTLDevice>) device;
整个 id 和 是怎么回事?什么情况下可以省略id部分?
我发现特别奇怪的是,虽然大多数 Metal 类型似乎都需要 id,但有些像 MTLRenderPipelineDescriptor 这样不需要它,实际上只在 Type* 模式下工作。为什么会这样?如何从文档中确定需要什么?
【问题讨论】:
-
id 是动态类型,使用 可以明确定义它是什么类型的输入。尝试使用 #import
#import
标签: ios objective-c metal