2010-04-19 18 views

Respuesta

12

Para la memoria del montón, está solo por defecto. A menos que asigne la memoria del montón con NSAllocateCollectable o NSReallocateCollectable, o entregue explícitamente un objeto CoreFoundation al recolector de basura a través de una API como NSMakeCollectable, el GC no tiene idea de su memoria y no la administrará por usted. Por el contrario, cuando GC está habilitado, los objetos Objective-C creados con +alloc/-init son gestionados por GC a menos que explícitamente se indique lo contrario con una llamada API complementaria.

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

+2

+1 La Guía de programación de recolección de basura es una de las piezas técnicas más fascinantes que jamás haya leído. –

+0

NSAllocateCollectable es exactamente lo que estaba buscando, ¡gracias! –

5

Si utiliza malloc() para asignar una estructura en el montón, entonces yo realmente duda de que (la página del manual no menciona nada al respecto, pero es posible que Apple volvió a escribir malloc para el tiempo de ejecución ObjC2). Si usa NSAllocateCollectable(), entonces sí.

Si la estructura se creó en la pila, no hay necesidad de recopilación, ya que se destruirá tan pronto como se cierre el marco.

+0

+1 Para mencionar lo que sucede a estructuras asignado en la pila. –

Cuestiones relacionadas