考虑以下语句
var aString: String! = "this is a test string"
现在我们看到aString
始终需要保留值“”或某些文本。然后,使它成为隐式未包装的可选内容有什么用。为什么不能像这样的简单字符串:
var aString: String = "this is a test string"
除了IBOutlets
之外,我还想了解隐式未包装可选对象的存在的目的。
换句话说,当我们知道var
总是具有一些非nil值时,使var
隐式未包装的可选内容有什么好处,为什么我们不应该将其声明为普通的var $content = $(composeView.getBodyElement());
var $myContent = $('<div class="my_content">Hello World!</div>');
$content.append($myContent );
composeView.setBodyHTML($content.html());
。
答案 0 :(得分:3)
所有与类初始化有关。
以出口为例,它们被强制解开,因为我们知道它们在XIB或Storyboard中进行初始化后将保留一个值,但在类初始化之前将不会对其进行设置。
强制解开可选出口以告诉编译器,我有责任确保在调用此变量之前将其设置。
在您的示例中,我认为写没有道理
let aString: String! = "this is a test string"
应该与您写的一样
let aString: String = "this is a test string"
更有意义的是:
var aString: String!
表示您将拥有此变量初始化的所有权(即确保它不是nil)