2016-05-10 6 views
0

Я работал над некоторыми утилитами XML в Objective-C, включая мои собственные объекты потока ввода-вывода, построенные вокруг значений FILE *. Чтобы сделать это безопасно, важно, чтобы я вызывал fclose в указатель файла, когда объект потока освобожден (если я еще этого не сделал).NSObject finalize устарел - что мне делать вместо этого?

Моя стратегия для этого (и многих других задач освобождения) уже давно должна была переопределить метод finalizeNSObject. Однако я только что прочитал (и подтвердил путем тестирования), что finalize больше не вызывается вообще во время освобождения.

Сбор мусора устарел в OS X v10.8; вместо этого вы должны использовать автоматический подсчет ссылок - см. Transitioning to ARC Release Notes.

Так что, по-видимому, сейчас я прошел через две версии OS X, не понимая, что я все время испытываю кровопотери системных ресурсов. Я прочитал эти заметки о выпуске, и я не мог найти ссылки на эту конкретную проблему. Мне не удалось найти альтернативный метод обработки освобождения.

Я пишу обертки Objective-C для типов данных C/C++. Мне нужно каким-то образом освободить неуправляемую память, когда оболочка освобождается.

Есть ли альтернатива ARC для finalize? И если не то, что я должен делать с malloc'd типами C/C++ в моих NSObjects?

ответ