Прежде всего, обратите внимание на документацию для stringByAppendingPathComponent:
:
Обратите внимание, что этот метод работает только с путями к файлам (не, например, для строковых представлений URL).
Таким образом, вы используете метод для случая, который не предназначен для поддержки.
Использование его с путем к файлу показывает то же поведение, хотя:
[@"/abc/" stringByAppendingPathComponent:@"/"]; // -> @"/abc"
[@"/abc/" stringByAppendingPathComponent:@"/def/"]; // -> @"/abc/def"
Так чтоКажется, что метод всегда предпочитает пути, которые не заканчиваются косой чертой, независимо от того, была ли косая черта частью исходного пути или аргумента.Хотя я не знаю, назову ли я это ошибкой.В конце концов, и 1013 *, и /abc/
указывают на один и тот же элемент в файловой системе, не так ли?
Но, похоже, точное поведение может быть задокументировано лучше.