斯威夫特的自我

今天我在谈论Swift中的self关键字。 让我们先检查一些代码。

这是关于属性初始化的错误使用,但是开始我们的主题是个好方法。

这是运行后的日志:

有人可能会问为什么self在这里是一个函数,它不应该是当前类的实例吗? 好,让我们添加一些东西。

和添加lazy关键字后的日志:

看到, self成为我们现在期望的当前类的实例。

那么, lazy这个魔术词做什么呢?

也就是说,关键字lazy确保默认闭包内的self被初始化并引用当前实例。 但是,当没有lazy声明时, self指的是什么?

我们知道许多语言都有关键字self ,例如Ruby和Python。 还有许多其他语言具有相同的模式,但是在JavaScript,C#和Java中使用了不同的关键字,例如this 。 而且,JavaScript中的this始终是指诸如global东西,但是迅捷的self并不总是具有意义。

让我们进一步了解我们在一开始所声明的内容。

看来我们可以得出结论了。

开始时的self是指NSObjectProtocol中的self

让我们做一个小实验:

我们声明一个名为SomethingNotInheritedFromNSObject的类,该类未从NSObject继承。 并且self在初始关闭时变得不确定。 这就是Swift中的自我。