Ios 为什么人们倾向于将NSURL存储为NSString
在互联网上以及这里,我看到了类似的代码Ios 为什么人们倾向于将NSURL存储为NSString,ios,objective-c,nsstring,nsurl,Ios,Objective C,Nsstring,Nsurl,在互联网上以及这里,我看到了类似的代码 NSString *imageUrl = [NSString stringWithFormat:@"%@",[info valueForKey:UIImagePickerControllerReferenceURL]]; 然后 NSURL *url = [[NSURL alloc] initWithString:imageUrl]; 为什么不直接存储NSURL?是因为优化吗?NSString的存储成本更低吗?NSString更普遍使用。例如,AFNet
NSString *imageUrl = [NSString stringWithFormat:@"%@",[info valueForKey:UIImagePickerControllerReferenceURL]];
然后
NSURL *url = [[NSURL alloc] initWithString:imageUrl];
为什么不直接存储NSURL?是因为优化吗?NSString的存储成本更低吗?NSString更普遍使用。例如,AFNetworking使用字符串而不是NSURL。此外,如果您需要将此URL作为参数发送到web服务器,则还需要字符串格式的URL
惰性实例化只是Obj-C中的一个良好实践。只在需要时创建对象。很多时候,这似乎不是空间问题(如果
NSURL
不包含任何其他特定数据,但不会对大多数应用程序产生影响,则存储NSString
将更有效)
实际上,将URL存储为字符串的最常见原因是,我们认为URL就是字符串
最后,最适用/最具体的选择通常是最佳的——NSURL
表示“可能包含远程服务器上资源位置、磁盘上本地文件路径甚至任意编码数据段的URL”(),而NSString
仅表示一个文本字符串(如果URL是您想要的),请使用NSURL
(NSString的一个明显优点是它们更便于携带,但如果需要,也可以序列化和移动
NSURL
).将其存储在哪里?这两行代码在哪里?在不同的地方或相同的方法?任何使用第一行代码的人都是疯狂的。它可能随时中断。将NSURL
转换为NSString
的正确方法是使用absoluteString
方法,而不是stringWithFormst:
。坏习惯RL或URI是结构化数据,NSURL表达了这一点。字符串是一个字符数组。@KatedralPillon然后保留原始的NSURL
。没有理由将NSURL
转换为NSString
,除非您确实需要使用URL的NSString
表示。谢谢大家,我会保留的p NSURL,因为似乎没有实现优化,并且除了作为url之外,我对url没有其他需要。