Когда мне следует использовать 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-адреса, пожалуйста, сделайте Поделиться! Ваше здоровье.

9
задан epologee 14 October 2011 в 03:34
поделиться