2011-10-12 6 views
5

en Xcode 4.2 He encontrado que es muy frustrante porque no se puede utilizar:¿Cómo se libera la memoria en xcode 4.2?

-(void)dealloc { 
[label release]; //'release' is unavailable 
[super dealloc]; //'dealloc' is forbidden in automatic reference counting 
} 

¿Hay otra manera porque autorelease y otros deallocs no funcionan bien.

+0

... no es así. A menos que tenga su proyecto usando la gestión de memoria manual. – JoePasq

+0

entonces no recibiría una advertencia de memoria incluso si no liberara la memoria? – iphonemaniac

+0

No puedo decir lo mejor de mi cabeza. Verifique los documentos sobre eso, no creo que las advertencias de memoria se hayan ido, especialmente con el iPhone 3GS todavía en el mercado. – JoePasq

Respuesta

9

Xcode 4.2 introduce "Counting automática de la referencia" (también conocido como ARC). Esta es una característica del compilador que básicamente inserta las llamadas retener y liberar para usted. En ARC, si tiene un puntero a un objeto, lo está reteniendo. Cuando el puntero sale del alcance o se reasigna para señalar a otro objeto, se libera el objeto original. Es realmente bueno.

Así que, en resumen, que acaba de eliminar todas las llamadas a retain, release y autorelease, y el compilador va a hacer lo correcto para usted.

+0

¡Eso es increíble! – iphonemaniac

1

Lectura en recuento automático de referencias. Si escribe su código correctamente, ya no necesita hacer nada de eso.

Si desea utilizar el código anterior sin convertir, desactive ARC. ponga -fno-objc-arc en los indicadores del compilador para cualquier módulo fuente que no desee usar ARC.

Joe

+0

¿Cómo se escribe el código correctamente? – iphonemaniac

+0

¿Importaría si no liberase la memoria? – iphonemaniac

+0

No, no sería – iphonemaniac

Cuestiones relacionadas