2011-02-10 24 views
5

sé los siguientes usos de @ (símbolo arroba):¿Qué significa el símbolo @ para Objective-C?

@ "miCadena" - se usa para indicar un objetivo-c NSString, en lugar de una cadena estándar de C

@keyword - se usa para identificar algunos Palabras clave objetivas c como @implementation, @synthesize, @class y @interface

¿Qué significa @KEYNAME en el contexto a continuación?

[SFHFKeychainUtils storeUsername:@KEYNAME andPassword:[NSString stringWithUTF8String:b64data] forServiceName:@"default" updateExisting:YES error:&ter_ror]; 

¿Tiene algún otro significado posible?

+0

¿De dónde viene ese código? – BoltClock

+0

Lo único que se me ocurre es que es una macro personalizada. – Wevah

+3

en realidad, si KEYNAME tiene # DEFINE como un literal de cadena estilo c normal, el @ simplemente lo convierte en un literal obj-C NSString, al igual que @ "myString". – rgeorge

Respuesta

7

No significa nada en el contexto del fragmento de código. Eso fallará con un error de sintaxis.

El motivo @ se utiliza en palabras clave Obj-C y en cadenas constantes es porque @ no es un carácter válido para usar como parte de un token en C, y Obj-C es un superconjunto estricto de C. Esto significa que todo el código C válido es código Obj-C válido, por lo que Obj-C no puede tomar ninguna palabra clave que podría haberse mostrado en C. válida ya que @ no es válido en tokens, eso significa que Obj-C podría simplemente usarlo para inicie todas sus palabras clave y no se preocupe por las colisiones.

En cuanto a otros significados posibles, hay algunas palabras clave que se omite, como @protocol, @dynamic, @private, @protected, @public, @selector y @encode.

+2

No es un error de sintaxis si tiene '#define KEYWORD" una cadena "'. También hay '@ package' y' @ compatibility_alias'. –

+0

@Dave: se definió como una cadena – Casebash

Cuestiones relacionadas