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