Swift中NSURLRequest和URLRequest有什么区别?

时间:2017-06-27 00:46:22

标签: swift cocoa cocoa-touch nsurlrequest

我正在查看一些快速文档,我发现NSURLRequest和URLRequest实际上是相同的,添加了使用NSURLRequest的消息:

  

当您需要引用语义或其他特定于Foundation的行为时。

一个比另一个更快,在什么情况下应该使用另一个?

2 个答案:

答案 0 :(得分:8)

URLRequestNSURLRequest的叠加层,因此您认为它们本质上是相同的是正确的。它们不同的类,但它们旨在提供相同的功能。 NS版本更像是一个遗留API,它是Objective-C的延续,而非NS版本是“swifty”的版本。一。

以下是苹果自己在NSURLRequest上的文档的引用:

  

Swift覆盖到Foundation框架提供了URLRequest结构,该结构桥接到NSURLRequest类及其可变的>子类,   NSMutableURLRequest。有关值类型的详细信息,请参阅Working with Cocoa Frameworks中的Using Swift with Cocoa and Objective-C (Swift 4)

此外,这是他们决定从基金会的一些课程中删除NS的实际快速提议。

https://github.com/apple/swift-evolution/blob/master/proposals/0086-drop-foundation-ns.md

基本上,如果您使用的是Objective-C,则使用NS版本。如果您使用的是Swift,您希望默认使用非NS版本,并且在尝试连接到Objective-C时只使用NS版本,或者特定库要求您使用NS版本。

答案 1 :(得分:1)

Swift在使用Swift结构包装一些NS类的基础中有一定的模式。例如String(NSString),Array(NSArray),JSONSerialization(NSJSONSerialization),Date(NSDate),......

尽可能使用包装器仅在需要时下载到NS版本。在这种情况下,除非遇到问题,否则请使用URLRequest。