El carácter @
no se utiliza en C o identificadores de C++, por eso se usa para introducir palabras clave de lenguaje Objective-C de una manera que no entre en conflicto con las palabras clave de otros idiomas. Esto permite que la parte "objetiva" del lenguaje se mezcle libremente con la parte C o C++.
Por lo tanto, con muy pocas excepciones, cada vez que vea @
en algún código de Objective-C, está buscando construcciones de Objective-C en lugar de C o C++.
Las principales excepciones son id
, Class
, nil
, y Nil
, que generalmente son tratados como palabras clave del lenguaje a pesar de que también pueden tener un typedef
o #define
detrás de ellos. Por ejemplo, el compilador realmente trata id
especialmente en términos de las reglas de conversión de tipo de puntero que aplica a las declaraciones, así como también a la decisión de generar barreras de escritura GC.
Otras excepciones son in
, out
, inout
, oneway
, byref
, y bycopy
; estos se utilizan como anotaciones de clase de almacenamiento en el parámetro del método y los tipos de devolución para hacer que los objetos distribuidos sean más eficientes. (Se convierten en parte de la firma del método disponible desde el tiempo de ejecución, lo que hacemos puede mirar para determinar cómo serializar mejor una transacción.) También están los atributos dentro @property
declaraciones, copy
, retain
, assign
, readonly
, readwrite
, nonatomic
, getter
y setter
; esos solo son válidos dentro de la sección de atributo de una declaración @property
.
qué @ se utiliza antes y @interface @ ¿fin? –