Respuesta

8

Sin según el Saldo de referencias automática llvm document on ARC

implementa la gestión de memoria automática de objetos Objective-C y bloques, liberando al programador de la necesidad explícita insertar retiene y libera. No proporciona un recolector de ciclos; los usuarios deben administrar explícitamente el tiempo de vida en su lugar.

y

Un puntero objeto retenible (o puntero retenible) es un valor de un tipo de puntero objeto retenible (tipo retenible). Hay tres clases de tipos de puntero de objeto puede retener:

  • punteros de bloque (formados mediante la aplicación del símbolo de intercalación (^) sigilo declarador a un tipo de función)
  • Objective-C de objetos punteros (id, clase, NSFoo *, etc.)
  • typedefs marcados con __attribute __ ((NSObject))

Otros tipos de puntero, como int * y CFStringRef, no están sujetos a la semántica de ARC y restricciones.

3

ARC liberar directamente únicos objetos ObjC (no char*, void*, int* ...). Sin embargo, ARC aún llama al método dealloc de objetos. Entonces, si tiene un objeto ObjC, malloc tiene algo de memoria y señala un carácter * en él, y el método dealloc llama gratis para que la memoria se elimine adecuadamente.

Lo mismo para los objetos de Core Foundation, aún necesita CFRelease ellos. Incluso los tipos de CF con puente libre necesitan llamadas manuales al CFRelease.

Cuestiones relacionadas