2016-06-08 5 views
-4

누군가 지정된 초기화 프로그램과 초기화 프로그램의 편리함을 간단하고 명확하게 설명 할 수 있습니까? 가능한 경우 몇 가지 기본적인 예를 이해해야합니다. 감사합니다스위프트 2의 지정된 초기화 프로그램과 편의 초기화 프로그램

+3

* * 당신은 그것에 대해 이해하지 못합니까? https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html 및 http://www.codingexplorer.com/designated-initializers-convenience-initializers-swift/ – luk2302

답변

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

편의 초기화 프로그램은 지정된 초기화 프로그램을 호출하는 초기화 프로그램입니다. 대부분의 초기화를 지정된 이니셜 라이저에 위임하기 전에 일부 기본 인수 또는 일부 추가 기능을 집어 넣기 위해 존재합니다.

이 이미지는 좋은 설명을 제공 :

initializers

관련 문제