便利構造函數并不負責創建對象,在便利構造函數中可以對屬性進行判斷,判斷是否符合創建條件,也可以為創建的對象賦值,但是由于便利構造函數不負責創建對象,所以在便利構造函數中必須要去手動調用構造函數self.init()去真正的創建對象,并且由于在便利構造函數中可以對構造的對象的屬性進行判斷,如果屬性不能通過判斷則不創建對象,所以便利構造函數可以返回一個nil所以構造函數名可以為 convenience init?是一個可以返回nil的構造函數。 并且在便利構造函數中可以對成功創建的對象進行屬性的賦值,所以屬性的賦值必須要在對象的創建之后,也就是self.init之后。 例
```
convenienceinit?( age : Int ,name :String){
if age >100{
return nil
}else{
self.init()
self.name = name
}
}
```