是否需要使用无用的 object.self.self.. 或 Class.self.self.. ?

zey*_*tin 6 xcode objective-c ios swift

让我们写一个简单的类在我的脑海中解释:

class SomeClass {
    var happyToUsed = 10
}
Run Code Online (Sandbox Code Playgroud)

并创建一个对象

let someObject = SomeClass()
Run Code Online (Sandbox Code Playgroud)

并将其属性用于案例 1:

someObject.happyToUsed  // prints 10
Run Code Online (Sandbox Code Playgroud)

对于情况 2:

someObject.self.happyToUsed // prints 10
Run Code Online (Sandbox Code Playgroud)

和案例 3

someObject.self.self.self.self.happyToUsed  // prints 10 compiler is still ok, even if self count 1k
Run Code Online (Sandbox Code Playgroud)

我知道案例 1 和案例 2 是相同的(直接指向同一个对象)。即使我使用了 SomeClass.self 而不是对象案例也会以同样的方式运作。到目前为止,我曾在一个项目中使用过案例 3。

我的问题是有任何我应该更喜欢的示例案例 3 或对内存管理的负面影响吗?

Swe*_*per 6

这是根据 Swift 参考的Postfix Self Expression

后缀自表达式由一个表达式或一个类型的名称组成,后面紧跟 .self

第一种形式的计算结果为表达式的值。例如,x.self 的计算结果为 x。

您可以.self无限期写入的事实只是此定义的副作用。由于x.self是一个表达式本身,您也可以添加.self到它。你可以永远这样做。

但这并不意味着你应该这样做。

它们做同样的事情:

let x                         =                          10
let x = 10
Run Code Online (Sandbox Code Playgroud)

希望你会同意第二个读得更好。同样,.self一般是多余的。根据这个讨论,它似乎.self真的只是 Objective-C 的遗产。IMO 它还使诸如身份密钥路径 ( \.self) 之类的语法“更有意义”。