有人可以簡單明瞭地解釋指定初始化程序和初始化程序的便利之間的區別嗎?如果可能的話用一些基本的例子來理解。謝謝Swift 2中的指定初始化程序和便捷初始化程序
-4
A
回答
1
便利初始化提供另一種實例化一個類或結構。便利初始值設定項必須調用默認的初始值設定項。下面是一個非常簡單的例子,可以幫助你看到的有用性和語法類:
import Foundation
class Person {
var firstName: String
var lastName: String
init(firstName: String, lastName: String) { //default initizlier
self.firstName = firstName
self.lastName = lastName
}
convenience init(fullName: String) { //convenience initalizer to let user create instance of Person with a single string
var fname: String
var lname: String
var nameParts = fullName.componentsSeparatedByString(" ")
if nameParts.count == 1 {
fname = ""
lname = nameParts[0]
} else {
fname = nameParts.first ?? ""
lname = nameParts.last ?? ""
}
self.init(firstName: fname, lastName: lname) //must call the default initializer
}
}
let person1 = Person(firstName: "Fred", lastName: "Flintstone")
let person2 = Person(fullName: "Wilma Flintstone")
//let person3 = Person() //invalid due to no init() defined
print("\(person1.firstName) \(person1.lastName)") //Fred Flintstone
print("\(person2.firstName) \(person2.lastName)") //Wilma Flintstone
希望這個例子有助於澄清事情有點!
+0
許多謝謝!這是一個很好的幫助 –
+0
最完美的例子解釋最好的答案! – technerd
1
相關問題
- 1. swift方便程序初始化錯誤
- 2. 初始化,初始化與參數和便利初始化
- 3. 在Swift的初始化程序中使用其他類初始化程序
- 4. 如何知道哪個初始化程序是指定的初始化程序?
- 5. C++ 0x指定的初始化程序
- 6. 指定的初始化程序?
- 7. Swift中的便捷初始值設定程序
- 8. 指定初始化程序,請澄清。
- 9. 在指定的初始化程序中初始化實例對象?
- 10. Swift超級初始化程序
- 11. Python程序的初始化
- 12. 我可以初始化mem初始化程序中的聯合?
- 13. Swift CoreData:無法調用NSManagedObject上的指定初始化程序
- 14. 定製按鈕的初始化程序
- 15. 指定初始化程序缺少超級調用超級類的指定初始化程序
- 16. 使用指定的初始化程序初始化一個類 - 混淆
- 17. 應用程序初始化
- 18. NSUserDefaults初始化程序
- 19. 創建初始化程序
- 20. 異常初始化程序
- 21. ::初始化程序(NameError)
- 22. Angular 2應用程序庫初始化
- 23. C#初始化程序空指針
- 24. 在初始化程序列表中初始化unordered_map
- 25. swift方便初始化和泛型類
- 26. 編程初始化
- 27. 通過初始化程序列表初始化QList
- 28. 從初始化程序列表初始化,但沒有{{{{{{{{...}}}}}}}}?
- 29. LINQ列表初始化程序不保留初始化命令
- 30. 錯誤信息:未初始化::初始化程序:: MEMCACHE
*你不明白它是什麼*請參閱https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html和http://www.codingexplorer.com/designated-initializers-convenience-initializers-swift/ – luk2302