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 或对内存管理的负面影响吗?
这是根据 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) 之类的语法“更有意义”。
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |