在Swift中,两种不同的自我用法有什么区别?

时间:2014-09-29 21:01:30

标签: xcode uitableview swift

在这个用于表格单元的Swift Xcode 6.0.1示例中,.self用作后缀(不记得看到之前使用过的自我),以及前缀self。 (这当然是无处不在),试图了解这意味着什么。

// Register the UITableViewCell class with the tableView

self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: self.cellIdentifier)

3 个答案:

答案 0 :(得分:8)

首次使用self作为前缀是对包含当前正在调用的方法的类实例的引用。在第二种用法中,self将类型称为值,在这种情况下UITableViewCell.self引用UITableViewCell类型

答案 1 :(得分:3)

self是一种返回消息接收者的方法。在这种情况下,它会返回Class的{​​{1}}对象。

答案 2 :(得分:2)

我认为这是因为其他地方的类型用于键入某个变量。但SomeType.self表示要使用此类型作为值。除非你致电.self,否则我认为某种类型不能代表它自己。

在游乐场中尝试以下操作。

class Foo {}
Foo // ^ Compiler error: expected member name or constructor call after type name

.self

class Foo {}
Foo.self // console reports: (Metatype)