我有点想快速了解.self
,总是将自己的自定义单元格注册在collectionView或tableView中,我必须像customCollectionViewCell.self
一样注册,但为什么不这样做,例如{{1 }}?
我曾在操场上尝试在变量中键入customCollectionViewCell()
来查看会发生什么,并且没有错误,但是当我尝试给它赋值时,出现以下错误
无法将类型为'String'的值分配为类型
String.self
这是什么意思?
答案 0 :(得分:5)
Type()
是Type.init()
的简写形式,因此String()
调用String.init()
并因此初始化String
。
另一方面,String.self
返回String
的元类型,该元类型表示String
类型本身而不是该类型的任何实例。有关元类型的更多信息,请参见官方Swift语言参考的Metatype Type部分。
在您的特定示例中,您需要注册UITableViewCell
子类类型而不是特定类型的实例,因此您需要使用YourCellType.self
。