为什么人们倾向于将NSURL存储为NSString

时间:2014-07-29 01:20:04

标签: ios objective-c nsstring nsurl

在整个互联网以及SO上,我看到与此类似的代码

NSString *imageUrl = [NSString stringWithFormat:@"%@",[info valueForKey:UIImagePickerControllerReferenceURL]];

然后

NSURL *url = [[NSURL alloc] initWithString:imageUrl];

为什么不直接存储NSURL?是因为优化? NSString的存储成本是否更低?

2 个答案:

答案 0 :(得分:2)

很多时候,它似乎不是空间问题(如果NSString不包含任何其他特定内容,那么存储NSURL会更有效率数据,但不是在大多数应用程序中产生差异。)

实际上,将URL存储为字符串的最常见原因是它本身就是我们对URL的看法 - 简单就是字符串。

最后,最适用/特定的选择通常是最好的 - NSURL代表"一个可能包含远程服务器上资源位置的URL,本地文件的路径磁盘,甚至任意一段编码数据" (source),而NSString只代表一串文字 - 如果您正在使用的是网址,请使用NSURL

NSString的一个明显优势是它们更具便携性 - 但NSURL可以序列化并在需要时移动!)。

答案 1 :(得分:1)

NSString更普遍使用。例如,AFNetworking使用字符串而不是NSURL。此外,如果您需要将此URL作为参数发送到Web服务器,您也需要它以字符串格式。

懒惰实例化只是Obj-C中的一个好习惯。仅在需要时创建对象。