¿Cuánto time se ha soportado la concatenación de NSString?

Acabo de encontrar esta línea en un código henetworkingado que estoy editando:

[UIImage imageNamed:@"data/visuals/interface/" @"backgroundViewController"]; ^^^^ "Oops, what have I done here?" 

Creí que accidentalmente había pegado algo en el lugar equivocado, pero un deshacer no cambió esa línea. Por curiosidad, construí el progtwig ¡y fue exitoso!

Whaddyaknow Obj-c tiene una forma más sucinta de concatenar literales de cadenas.

Agregué algunas testings más:

Un logging simple

 NSLog(@"data/visuals/interface/" @"backgroundViewController"); 

datos / visuales / interfaz / backgroundViewController

En parameters

 NSURL *url = [NSURL URLWithString:@"http://" @"test.com" @"/path"]; NSLog(@"URL:%@", url); 

URL: http: //test.com/path

Uso de variables

 NSString *s = @"string1"; NSString *s2 = @"string2"; NSLog(@"%@", s s2); 

No comstack (no sorprende esto)

Otros literales

 NSNumber *number = @1 @2; 

No comstack


Algunas preguntas

  • ¿Está documentada esta concatenación de cadenas en cualquier lugar?
  • ¿Cuánto time ha sido compatible?
  • ¿Cuál es la implementación subyacente? Espero que sea [s1 stringByAppendingString:s2]
  • ¿Se considera una buena práctica por cualquier organismo autorizado?

Este método de concatenar NSStrings estáticos es una capacidad de compilation en time de compilation que ha estado disponible durante más de diez años. Por lo general se usa para permitir que largas cadenas constantes se dividan en varias líneas. Capacidades similares han estado disponibles en "C" durante décadas.

En el libro de Lenguaje de Progtwigción C , segunda edición de 1988, la página 38 describe la concatenación de cadenas por lo que ha existido durante mucho time.

Extracto del libro:

Las constantes de cadena se pueden concatenar en el time de compilation:

 "hello," " world" is equivalent to "hello, world" 

Esto es útil para escupir cadenas largas a través de varias líneas de origen.

Objective-C es un superset estricto de "C" por lo que siempre ha soportado la concatenación de cadenas "C" y creo que debido a esa concatenación estática NSString siempre ha estado disponible.

Se considera una buena práctica cuando se usa para dividir una cadena estática en varias líneas para facilitar su lectura.