可能重複:
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代碼。 –