1

В моем коде я создание ядра Foundation объекта, и из документации яблочного я узнал, чтоОбъекты Core Foundation автоматически выпускаются ARC или нам нужно ручное управление памятью?

«Продолжительность жизни объекта Основного фонда определяется его счетчика ссылок» https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Articles/lifecycle.html

Так что я очень сомневаюсь, что ли объекты ядра фундаментные высвобождаются ARC или мы должны выпустить в письменном виде CFRelease (MyObject)

Am, используя Xcode 6.4, и в настоящее время в моем коде я не с помощью какого-либо CFRelease (MyObject) для освобождения своих объектов ядра Foundation, и до сих пор я не мог найти какую-либо утечки памяти в Xcode инструментов (Leak) ..

Итак, мой вопрос заключается в том, позаботится ли ARC о выпуске объектов Core Foundation .. ??

как я просто наткнулся на заявление, как,

Напомним, что ARC имеет дело только с объектами Objective-C. Он не управляет сохранением и выпуском объектов CoreFoundation, которые не являются Объекты Objective-C. http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode

Так что, если какой-либо один попадались с той же проблемой и нашел решение пожалуйста делимся ...

Заранее спасибо ..

ответ

2

Вы должны вызывать CFRelease освободить объект ядра Foundation.

https://developer.apple.com/library/ios/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226-CH1-SW1

Компилятор автоматически не управлять временем жизни объектов ядра фонда; вы должны позвонить CFRetain и CFRelease.

Или вы можете использовать __bridge_transfer или CFBridgingRelease, чтобы переместить собственности на объект ядра фонда в рамках собственности на объект Objective-C ARC.

  • __bridge_transfer или CFBridgingRelease перемещает указатель без Objective-C в Objective-C, а также передает право собственности АРК.
    • ARC несет ответственность за отказ от собственности на объект.

Так следующий случай, переменная NSString* __strong name имеет право собственности на объект ядра Foundation. Объект Core Foundation автоматически освобождается при name = nil; или в конце диапазона name переменной.

NSString *name = (NSString *)CFBridgingRelease(ABRecordCopyValue(person, kABPersonFirstNameProperty)); 

Или

NSString *name = (__bridge_transfer NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); 
+0

Спасибо за Ваш ответ ... Вы можете перечислить то, что все другие структуры, такие как рамки основного фонда, что ARC не будет заботиться .. ?? –

+0

AFAIK, Структура адресной книги. Но он устарел от iOS 9. Во всяком случае, почему вы не принимаете этот ответ? :) –