Swift 中的 NSURLRequest 和 URLRequest 有什么区别?

What is the difference between NSURLRequest and URLRequest in Swift?

我正在查看一些 swift 文档,我看到 NSURLRequest 和 URLRequest 实际上是一样的,增加了使用 NSURLRequest 的花絮:

when you need reference semantics or other Foundation-specific behavior.

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

Swift 在 Foundation 中有一个特定的模式,用 Swift 构造包装一些 NS 类。这方面的示例包括字符串 (NSString)、数组 (NSArray)、JSONSerialization (NSJSONSerialization)、日期 (NSDate)、...

尽可能使用包装器,仅在需要时才下降到 NS 版本。在这种情况下,请使用 URLRequest 除非你 运行 遇到问题。

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

这里引用苹果自己的文档NSURLRequest:

The Swift overlay to the Foundation framework provides the URLRequest structure, which bridges to the NSURLRequest class and its mutable > subclass, NSMutableURLRequest. For more information about value types, see Working with Cocoa Frameworks in Using Swift with Cocoa and Objective-C (Swift 4).

此外,这是当他们决定从一些 类 基金会中删除 NS 时的实际 swift 提议。

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

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