我正在查看一些快速文档,我发现NSURLRequest和URLRequest实际上是相同的,添加了使用NSURLRequest的消息:
当您需要引用语义或其他特定于Foundation的行为时。
一个比另一个更快,在什么情况下应该使用另一个?
答案 0 :(得分:8)
URLRequest
是NSURLRequest
的叠加层,因此您认为它们本质上是相同的是正确的。它们是不同的类,但它们旨在提供相同的功能。 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。