Initializer

작성일

designated initializer //기본형태

class MyInfo {
  var name: String
  var myId: String
  
  //
  init(name: Stirng, id: String) {
      self.name = n
      self.myId = id
  }
}

var myInfo1 = MyInfo(m: "kim", id: "abcd")

myInfo1.myId
myInfo1.name

출력

"abcd"
"kim"

init을 사용하면, 처음에 생성되는 시점에, 받아서 세팅을 해줘야한다.
위 코드를 보면 myInfo1을 생성할때 값을 받아야함 위에값에

  var name: String = ""

이라고 세팅해줘도 되고 아니면

  init() {
      self.name = ""
      self.myId = ""
  }

이렇게 세팅해 줘도 된다.

convenience initializer // 필수조건 - 다른 init을 반드시 실행해야 한다.

class MyInfo {
  var name: String
  var myId: String
  var isAdult: Bool

  init(name: Stirng, id: String) {
    self.name = n
    self.myId = id
    self.isAdult = (age > 19) ? true : false
  
  //추가된 부분
  convenience init(){
    self.init(n: "", id: "") {
    }
  }

}

var myInfo1 = MyInfo(m: "kim", id: "abcd")

myInfo1.myId
myInfo1.name

위 convenience init()을 보면 위에 init 코드에서 값을 받는 코드뺴고 다 같다.
이럴때 사용하는 것이다.(연산하는 코드를 최대한 줄이기 위해서)