Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c MTLCreateSystemDefaultDevice的引用计数返回值_Objective C_Cocoa - Fatal编程技术网

Objective c MTLCreateSystemDefaultDevice的引用计数返回值

Objective c MTLCreateSystemDefaultDevice的引用计数返回值,objective-c,cocoa,Objective C,Cocoa,我正在使用Objective-C而不使用ARC,我想知道在这样使用时是否需要释放MTLCreateSystemDefaultDevice返回的设备: id<MTLDevice> device = MTLCreateSystemDefaultDevice() id device=MTLCreateSystemDefaultDevice() 我不确定id如何维护引用计数。基于内存管理的命名约定,我假设MTLCreateSystemDefaultDevice没有添加引用(但可能是错误的

我正在使用Objective-C而不使用ARC,我想知道在这样使用时是否需要释放MTLCreateSystemDefaultDevice返回的设备:

id<MTLDevice> device = MTLCreateSystemDefaultDevice()
id device=MTLCreateSystemDefaultDevice()

我不确定
id
如何维护引用计数。基于内存管理的命名约定,我假设
MTLCreateSystemDefaultDevice
没有添加引用(但可能是错误的),但是分配给
id
可能会导致调用retain?

是的,您需要在使用完对象后释放它。对于C函数(而不是Objective-C消息),相关的命名约定为。因为函数名中有“Create”,所以它返回一个由您负责发布的+1引用。(事实上,它返回的是Objy-C类型,而不是核心基础类型,这并不重要。) 至于
id
,即
id
,Objective-C的通用对象类型,协议名称
,表示
设备
指向的对象符合
MTL设备
协议。(有点奇怪,这实际上比单独使用
id
更具限制性,因为如果您尝试调用
MTLDevice
及其超级协议支持的方法以外的方法,编译器会发出警告。)并不是说对象是幕后的某个具体类,而是一个私有实现细节