可能重复:
How to make an CFArrayRef to an NSMutableArray如何将CFArrayRef转换为NSArray?
我知道有关于这个问题,这么多的信息,但每一个答案是“这很简单,你可以做强制转换为免费电话桥接。 。“,然后就没有提到实际的源代码。 我知道免费桥接和施放的意思。 我想知道确切的源代码“如何将CFArrayRef转换为NSArray?” 。 任何人都请!!!!!!
可能重复:
How to make an CFArrayRef to an NSMutableArray如何将CFArrayRef转换为NSArray?
我知道有关于这个问题,这么多的信息,但每一个答案是“这很简单,你可以做强制转换为免费电话桥接。 。“,然后就没有提到实际的源代码。 我知道免费桥接和施放的意思。 我想知道确切的源代码“如何将CFArrayRef转换为NSArray?” 。 任何人都请!!!!!!
你应该能够投它:
CFArrayRef *myLegacyArray = ...
...
NSArray *myArray=[(NSArray *)myLegacyArray copy];
好了,首先你要知道,如果你正在使用ARC与否,因为规则的改变。接下来,你需要知道你真的想要对演员进行什么。你只是想使用价值,还是转让所有权?
我会认为ARC是因为IMO所有的新代码真的应该使用ARC(而ARC就是其中的投射问题更普遍)。
CFArrayRef someArrayRef = ...;
NSArray *array = (__bridge NSArray*)someArrayRef;
上面的代码连铸CF参考,可以在当前的上下文中使用的NSArray*
。没有发生所有权转让。 someArrayRef
仍然保留其参考,你仍然必须手动发布someArrayRef
或它会泄漏。
CFArrayRef someArrayRef = ...;
NSArray *array = CFBridgingRelease(someArrayRef);
在这段代码中,您不仅可以获得投票,而且可以转让所有权。 someArrayRef
现在不再拥有引用,所以不需要手动发布。相反,当array
版本发布时,该对象将释放(假设其他地方没有其他引用)。
看起来像CFBridgingRelease是在ARC环境中走的路。始终转移到NS ...并使用CFBridgingRelease –
非常感谢!我现在就试试! – user1574429
你不需要复制它。一个免费的桥梁演员字面上只是'NSArray * myNsArray =(NSArray *)myCfArray;' – jjv360
这只适用于非ARC代码。 –