ios - swift - 隐式解包选项
问题描述
考虑以下陈述
var aString: String! = "this is a test string"
现在我们看到aString
总是需要保存一个值“”或一些文本。那么将其设为隐式展开的可选选项有什么用。为什么它不能是一个简单的字符串,例如:
var aString: String = "this is a test string"
另外,我想了解隐式展开的选项存在的目的,而不是在IBOutlets
.
换句话说,var
当我们知道它总是有一些非 nil 值时,制作一个隐式展开的可选有什么好处,为什么我们不应该将它声明为一个 normal var
。
解决方案
这都与类初始化有关。
以 Outlets 为例,它们被强制解包,因为我们知道它们将在从 XIB 或 Storyboard 初始化之后保存一个值,但它们不会在类初始化之前设置。
一个强制解包的可选退出告诉编译器我有责任确保在调用它之前设置这个变量。
在您的示例中,我认为编写以下内容没有意义:
let aString: String! = "this is a test string"
它应该就像你写的那样:
let aString: String = "this is a test string"
更有意义的是:
var aString: String!
意味着你将拥有这个变量初始化的所有权(即确保它不是零)
推荐阅读
- ios - ios13 设备中的 Cordova 应用程序在单击或滑动操作时表现异常
- python-3.x - 使用 PYQT5 python 在标签内显示 HOG 特征
- javascript - 当 url 有一些参数时显示引导模式
- bash - 如何在bash的echo中打印变量的结果?
- java - 为 Springboot 应用和嵌入式 Netty 服务器启用 Actuator 端点
- azure-devops - 发布测试结果任务不考虑易碎测试
- javascript - 用户做了某事但停留在同一页面
- json - 在 Analysis Services 中使用 SQL Server 动态 JSON?
- python - 在阿里巴巴搜索栏中通过 Selenium 上传图片
- python - 当我将枚举与理解表达式一起使用时,为什么我会看到 None 元素?