Objective C 2,0 сборки "мусора" собирают структуры C?

Что точно собирает сборщик "мусора" Objective C? Например, если я пишу программу в Objective C 2.0, и я использую некоторые простые структуры C, мой код должен волноваться о ручном освобождении той памяти?

9
задан Quinn Taylor 24 April 2010 в 17:34
поделиться

2 ответа

Что касается динамической памяти, по умолчанию вы предоставлены сами себе. Если вы не выделите память кучи с помощью NSAllocateCollectable или NSReallocateCollectable или явно не передадите объект CoreFoundation сборщику мусора через API, например NSMakeCollectable , GC не имеет представления о вашей памяти, и не справлюсь с этим за вас. И наоборот, когда GC включен, объекты Objective-C, созданные с помощью + alloc / -init , управляются GC, если вы явно не укажете иное с помощью дополнительного вызова API.

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/GarbageCollection/

12
ответ дан 4 December 2019 в 12:17
поделиться

Если вы используете malloc () для размещения структуры в куче, то я действительно сомневаюсь в этом (на странице руководства об этом ничего не говорится, но возможно, что Apple переписала malloc для среды выполнения ObjC2). Если вы используете NSAllocateCollectable () , тогда да.

Если структура была создана в стеке, то в сборке нет необходимости, так как она будет уничтожена, как только фрейм завершится.

5
ответ дан 4 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: