在整个互联网以及SO上,我看到与此类似的代码
NSString *imageUrl = [NSString stringWithFormat:@"%@",[info valueForKey:UIImagePickerControllerReferenceURL]];
然后
NSURL *url = [[NSURL alloc] initWithString:imageUrl];
为什么不直接存储NSURL?是因为优化? NSString的存储成本是否更低?
答案 0 :(得分:2)
很多时候,它似乎不是空间问题(如果NSString
不包含任何其他特定内容,那么存储NSURL
会更有效率数据,但不是在大多数应用程序中产生差异。)
实际上,将URL存储为字符串的最常见原因是它本身就是我们对URL的看法 - 简单就是字符串。
最后,最适用/特定的选择通常是最好的 - NSURL
代表"一个可能包含远程服务器上资源位置的URL,本地文件的路径磁盘,甚至任意一段编码数据" (source),而NSString
只代表一串文字 - 如果您正在使用的是网址,请使用NSURL
。
(NSString
的一个明显优势是它们更具便携性 - 但NSURL
可以序列化并在需要时移动!)。
答案 1 :(得分:1)
NSString更普遍使用。例如,AFNetworking使用字符串而不是NSURL。此外,如果您需要将此URL作为参数发送到Web服务器,您也需要它以字符串格式。
懒惰实例化只是Obj-C中的一个好习惯。仅在需要时创建对象。