2011-07-07 14 views
18

He descargado la versión de vista previa para desarrolladores de Xcode 4.2 y he creado una aplicación de cacao. Pero encontré una sintaxis muy extraña en la clase de delegados:¿Qué significa la palabra clave "fuerte"

@property (strong) IBOutlet NSWindow *window; 

¿Qué significa esto? Y el compilador ni siquiera puede compilarlo.

¡Gracias de antemano!

+2

No puedo decirte por la NDA, pero, como estás en el Programa Dev, lee la Programación con las Notas de la Versión de ARC. Como un aparte, es por eso que no podemos tener cosas bonitas. – Abizern

+0

Wow - No puedo encontrar nada en línea sobre 'strong'. Parece estar relacionado con IBOutlet y, en particular, si son referencias fuertes o débiles, pero eso es todo lo que obtuve. ¿Qué mensaje de error recibes del compilador? –

+0

@Chris Gregg: no IBOutlets específicamente; es por propiedades. La sesión (NDA'd) WWDC 2011 que presenta ARC lo cubre; es probable que esté al menos en parte de la documentación de NDA también. –

Respuesta

20

Indica que esta propiedad es una relación fuerte: una propiedad. Es la versión ARC de la palabra clave retain en el mismo contexto.

Y el compilador ni siquiera puede compilarlo.

Es código ARC válido, por lo que si sus herramientas son compatibles con ARC, sin duda deberían ser capaces de compilarlo.

Asegúrese de estar utilizando Xcode 4.2 o posterior, y de que tiene la opción del compilador del proyecto establecida en Clang ("Apple LLVM Compiler").

+0

Pregunta tangencial: ¿Cómo es ARC "automático" si el desarrollador todavía tiene que preocuparse por referencias "fuertes" y "débiles"? Parece que todo lo que han hecho es reemplazar 'retener' y' liberar' con algo aún menos intuitivo. – aroth

+2

@aroth: Porque todo lo que necesita hacer es declarar si la propiedad es fuerte o débil (o copia). No necesita hacer nada más después: no necesita liberar el objeto en dealloc, no necesita asegurarse de retener (si es fuerte) al asignar a la variable de instancia, y puede tener referencias débiles que automáticamente se establece en nil cuando el objeto al que se hace referencia muere. –

+0

@aroth: tampoco debe preocuparse si usa, digamos, 'stringWithFormat:' o 'alloc' y' initWithFormat: '; ARC defiende las reglas de administración de memoria para usted, con el efecto neto de que ninguna de ellas se fugará ni provocará un bloqueo. –

3

Fuerte se refiere al conteo automático de referencias (ARC) que está llegando en el nuevo compilador LLVM, parte de Xcode 4.2 cuando se lanza. En este momento, la vista previa de Xcode 4.2 aún se encuentra bajo NDA, publique cualquier pregunta en los foros de desarrolladores iniciando sesión en su developer account.

Ver esta bien weblog publicación.

Cuestiones relacionadas