use*_*429 9 iphone nsarray ios
我知道有很多关于这个问题的信息,但每个答案都是"这很容易.你可以做免费桥接.",然后没有提到实际的源代码.我知道免费桥接和演员的意思.我想知道确切的源代码"如何将CFArrayRef转换为NSArray?" .有人请!!!!!!
Jod*_*ins 39
好吧,首先你必须知道你是否使用ARC,因为规则有所改变.接下来,您需要知道您的演员实际上想要做什么.您只是想使用价值,还是转让所有权?
我将假设ARC,因为,IMO,所有新代码都应该使用ARC(ARC是铸造问题更普遍的地方).
CFArrayRef someArrayRef = ...;
NSArray *array = (__bridge NSArray*)someArrayRef;
Run Code Online (Sandbox Code Playgroud)
上面的代码将CF引用转换为NSArray*可以在当前上下文中使用的引用.没有转让所有权. someArrayRef仍然保留其参考,你仍然必须手动释放someArrayRef或它将泄漏.
CFArrayRef someArrayRef = ...;
NSArray *array = CFBridgingRelease(someArrayRef);
Run Code Online (Sandbox Code Playgroud)
在此代码中,您不仅可以获得演员表,还可以获得所有权转让. someArrayRef现在不再保留引用,因此不需要手动释放.相反,在array发布时,对象将dealloc(假设在其他地方没有其他引用).
你应该能够施展它:
CFArrayRef *myLegacyArray = ...
...
NSArray *myArray=[(NSArray *)myLegacyArray copy];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10809 次 |
| 最近记录: |