Когда я должен использовать NSURL вместо NSString и наоборот?

Это не вопрос о соответствующей проблеме. Это вопрос, с помощью которого я пытаюсь углубить свое понимание Objective-C или более конкретного Cocoa Foundation.

При загрузке и загрузке файлов с сервера в мои приложения я постоянно разрываюсь междуNSURL или жеNSString для всех вещей, связанных путь. Конечно, когда есть существующий API, я просто использую его в соответствии со спецификациями. Но когда я сохраняю свои собственные пути или создаю собственные классы, которые имеют с ними дело, я не понимаю, какой из этих двух вариантов будет лучше.

NSString используется везде и имеет удобные методы, такие какstringByAppendingPathComponent: а такжеstringByAppendingPathExtension:, Я могу легко преобразовать в NSURL, создав новый экземпляр с[NSURL URLWithString:@"string"] и наоборот, позвонив[url path] на экземпляре NSURL. Но разница есть по причине, верно?

Моя путаница возрастает, когда я смотрю на заголовочные файлы чего-то вроде NSFileManager. Эти два метода довольно близки друг к другу:

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
- (BOOL)copyItemAtURL:(NSURL *)srcURL toURL:(NSURL *)dstURL error:(NSError **)error NS_AVAILABLE(10_6, 4_0);

Почему я предпочитаю использовать один над другим, особенно когда преобразования между ними сделаны так легко? И почему Apple переживает проблему создания почти идентичных API для использования обоих типов данных?

Если у кого-то есть более глубокое понимание того, когда использовать NSURL вместо NSString для ваших собственных классов, обрабатывающих пути к файлам и удаленные URL, пожалуйста, поделитесь! Приветствия.

Ответы на вопрос(2)

Ваш ответ на вопрос