Я только что встретил эту строку в некотором устаревшем коде, который редактирую:
[UIImage imageNamed:@"data/visuals/interface/" @"backgroundViewController"];
^^^^
"Oops, what have I done here?"
Я думал, что, должно быть, случайно случайно вставил что-то не в то место, но отмена не изменила эту линию. Из любопытства я построил программу, и она прошла успешно!
Whaddyaknow? Obj-c имеет более сжатый способ конкатенации строковых литералов.
Я добавил еще несколько тестов:
Простой журнал
NSLog(@"data/visuals/interface/" @"backgroundViewController");
Данные/визуальные/интерфейс/backgroundViewController
В параметрах
NSURL *url = [NSURL URLWithString:@"http://" @"test.com" @"/path"];
NSLog(@"URL:%@", url);
URL: HTTP://test.com/path
Использование переменных
NSString *s = @"string1";
NSString *s2 = @"string2";
NSLog(@"%@", s s2);
Не компилируется (не удивляется этому)
Другие литералы
NSNumber *number = @1 @2;
Не компилирует
Некоторые вопросы
- Является ли это конкатенация строк документированной где угодно?
- Как долго он поддерживается?
- Какова основная реализация? Я ожидаю, что это будет
[s1 stringByAppendingString:s2]
- Считается ли это хорошей практикой каким-либо авторитетным органом?