桥接演员(目标c)后我应该释放c指针吗?

时间:2013-12-01 15:17:06

标签: objective-c automatic-ref-counting

想知道我是否应该在下面释放“大小”指针?

NSSize *size = (__bridge NSSize*)[track attributeForKey:QTTrackDimensionsAttribute];
...
free(size);

2 个答案:

答案 0 :(得分:0)

这取自Apple文档转换为ARC发行说明

  

__ bridge在Objective-C和Core Foundation之间传输指针,不转让所有权。

它的工作原理与标准演员相同。你不使用免费的,ARC会为你完成这项工作。

答案 1 :(得分:0)

您呼叫的方法的返回类型为(id) 因此,此处不存在C pointer,这使free(size)完全错误,并且__bridge强制转换也不需要,因为id已经是对象而ARC将知道该怎么做做它。

根据您传递的Key,返回对象的类型会有所不同,请参阅class documentation以获取您将获得的确切类类型。