init与默认值和调用方便初始化之间有什么区别吗?我试着找出何时应该使用方便而不是默认的init。
class Food
{
var name :String
init(name : String = "Unknow")
{
self.name = name
}
}
而且:
class Food
{
var name :String
init(name : String)
{
self.name = name
}
convenience init()
{
self.init(name : "Unkow")
}
}
答案 0 :(得分:1)
对于类的用户来说,方便初始化器比具有默认值的指定初始化器更容易,因为Xcode通过自动完成列出了两个初始化器。
使用默认值的指定初始值设定项的自动完成:
指定初始化程序和便捷初始化程序的自动完成:
截图是使用Xcode 6.2拍摄的。除非Xcode支持默认值的自动完成,否则便利初始化程序对用户来说更容易,特别是如果您为人们设计框架。
便利初始化器的缺点是,正如Kelvin在他的评论中提到的,你不能使用子类初始化器中的便利初始化器。