HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 为什么Objective-C API返回隐式展开的可选项?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对此感到困惑如果我们采用方法cellForRowATindexPath:在UITableView中,它的方法签名是:
func cellForRowATindexPath(_ indexPath: NSIndexPath!) -> UITableViewCell!

其返回值为:

这听起来像是使用标准可选的完美的理由.实际上,由于Objective-C中所有基于指针的类型都可以为零,所以Objective-C指针类型应该以标准的可选方式导入.

我从WWDC的谈话中知道,他们说隐含的展开的可选项:

>可以明确测试为零
>可以直接访问属性/方法的底层值
>可以隐式转换为其基础值

而从苹果的Using Swift with Cocoa and Objective-C

所以,不是将可能的零价值引入Swift作为一个可选的,而是决定将它导入到这个东西,说明这不应该是零…但是可以吗?听起来他们完全否定了Swift for Objective-C API中可选类型的安全性.我似乎缺少什么?

而不是给出编译时错误或警告,他们决定运行时错误更好?这很混乱

虑到没有什么似乎回答了我所看到的这个问题…我认为这是所有其他人明显的东西,我只是没有看到,但为什么是这样的

如果在Swift中使用Objective-C API或者更多的东西,是否允许人们使用或选择性链接,这是否真的只是为了保护用户

解决方法

当您在Swift中进行隐式解除选择时,并不意味着它总是不为零:所有这一切意味着您告诉编译器,当您访问其属性时,您希望对象为非零.您引用的对象可以被明确地检查为零;将其设置为nil也不会引起异常,除非您尝试访问其中的任何属性.

当苹果使用隐式解包的可选参数时

func tableView(_ tableView: UITableView!,cellForRowATindexPath indexPath: NSIndexPath!) -> UITableViewCell!

功能,他们让你节省一些额外的if – let.在这种情况下,他们知道他们永远不会通过你一个零;在其他情况下,他们不知道,他们希望你没有检查对象.

他们也允许你返回零.检查结果为零,取决于您,除非您决定自己调用功能.然我不能想到一个有效的原因从你自己的代码调用cellForRowATindexPath,如果你打电话,你的责任是检查返回值为零.

如果您虑使用参数UITableView的替代方法?和NSIndexPath?相反,所有实现都必须在tableView和indexPath之后使用感叹号,或者使用if-let成语.与此选择相比,隐含展开的类型看起来更好.

大佬总结

以上是大佬教程为你收集整理的ios – 为什么Objective-C API返回隐式展开的可选项?全部内容,希望文章能够帮你解决ios – 为什么Objective-C API返回隐式展开的可选项?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。