在斯威夫特身上,两种不同的自我用法有什么区别



在这个Swift Xcode 6.0.1的表单元格示例中,.self用作后缀(不记得以前见过self这样使用)和前缀self。(这当然无处不在),试图理解这到底意味着什么。

// Register the UITableViewCell class with the tableView
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: self.cellIdentifier)

self作为前缀的第一个用法是引用包含当前调用的方法的类的实例。在第二种用法中,self指的是一个类型作为值,在这种情况下,UITableViewCell.self指的是UITableViewCell类型

self是一个返回消息接收方的方法。在这种情况下,它返回UITableViewCellClass对象。

我认为这是因为在其他地方,该类型都用于键入一些变量。但是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)

最新更新