ios objective-c nsarray shorthand

ios - NSArray objectAtIndex: taquigrafía



objective-c shorthand (4)

Es un código perfectamente válido para la última versión del compilador LLVM. Hasta ahora, no es válido para otros compiladores (por ejemplo, GCC).

Ya sea que lo evites o no, bueno, es cuestión de gustos. Existen varias discusiones importantes sobre esto en Internet, ya que la indexación se comporta de manera ligeramente diferente (se utiliza un método completamente diferente para implementarla). También hay discusiones sobre si usar la expresión literales o no, ya que hay ocasiones en las que hacen que el código sea menos legible (por ejemplo, están escritos como literales pero en realidad son objetos de publicación automática). Tenga en cuenta que todo lo que se hace utilizando literales se puede hacer utilizando macros simples.

Posible duplicado:
¿Hay algún diccionario literal o sintaxis de matriz en Objective-C?

Recientemente he notado que algo extraño parece funcionar en object-c.

Cuando tengo una matriz,

NSArray *myArray = @[@"1", @"b", @"3", @"d"];

Normalmente puedo acceder al segundo elemento por,

NSString *element = [myArray objectAtIndex:1]; // second element

Sin embargo, parece que ahora también puedo acceder a través de.

NSString *element = myArray[1];

¿Alguien sabe si este es ahora un comportamiento definido y, por lo tanto, seguro de usar, o debo evitarlo? ¡¡Gracias a cualquiera que pueda ayudar!!


Esta sintaxis fue agregada en Clang 3.3: Objective C Literals . Esencialmente, el compilador convierte expresiones del tipo objCObj[idx] a la expresión [objCObj objectAtIndexedSubscript:idx] . También funciona para diccionarios, y usted es libre de adoptarlo para sus propios objetos.

Como tal, está perfectamente seguro de usarlo, asumiendo que usará una versión moderna de Objective C y un compilador de Objective C adecuadamente actualizado (es decir, Clang).


Ya, es seguro usar esta sintaxis.

Esas sintaxis son parte de Modern Objective-C.

Puedes consultar este artículo para más opciones: ObjectiveCLiterals


esta es una nueva característica de object-c y disponible desde xCode 4.5

Es seguro usar esta sintaxis, incluso puede dar soporte a sus propias clases para esto.