Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么人们倾向于将NSURL存储为NSString_Ios_Objective C_Nsstring_Nsurl - Fatal编程技术网

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没有其他需要。