gpt4 book ai didi

ios - 为什么 NSSession dataTaskWithRequest 完成处理程序对错误参数使用隐式解包可选?

转载 作者:可可西里 更新时间:2023-11-01 02:21:18 24 4
gpt4 key购买 nike

我是 Swift 的新手,遇到了一些让我感到困惑的事情。根据the documentation for NSSession ,dataTaskWithRequest方法签名如下:

func dataTaskWithRequest(_ request: NSURLRequest,
completionHandler completionHandler: ((NSData!,
NSURLResponse!,
NSError!) -> Void)?) -> NSURLSessionDataTask

我的问题是,为什么 completionHandler 的 NSError 参数是一个隐式解包的可选参数,当该参数为 nil 完全有效时?我会期望它被声明为 NSError 吗?可选的。有什么我想念的吗?

最佳答案

目前 iOS SDK 中存在许多此类不一致的问题。

在向 Swift 的过渡过程中,它目前处于不断变化的状态。

请记住,所有这些 API 都是用 Objective C 编写的。我能想到很多其他的例子,例如NSURL 等

随着 API 的成熟和完善,所有这些东西都变得越来越好,但是从 ObjC 到 Swift 的自动转换留下了一些怪癖,比如您提供的上述示例。

Apple 正在审查每个类并进行适当的更改以使 API 现代化,包括 Optionals 的最佳实践方法,但它们尚未完成。

关于ios - 为什么 NSSession dataTaskWithRequest 完成处理程序对错误参数使用隐式解包可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30807867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com