Properties

작성일

stored property(저장)

class MyInfo {

  // stored property(저장)
  var name = ""
  var age = 0
}

let myInfo = MyInfo()

myInfo.age = 10
myInfo.name = "kim"

print(myInfo.age)

출력하면

10

안에 들어있는 name, age같은게 Properties다.

lazy stored property

만약에 위 코드에서

class MyInfo {

  // lazy stored property
  var myProfiles = [UIImage(named: "n"), UIImage(named: "c"), UIImage(named: "w"),
                    UIImage(named: "d"), UIImage(named: "a"),]

}

var myProfiles 이부분을 추가를 시키면, 클래스가 인스턴스화 되는 시점에
과부하가 많이 걸릴수 있다.(UIImage가 많이 있기 때문)
하지만 바로 필요한 이미지가아니고, 나중에 버튼을 눌렀을떄 사용하는 이미지면,
앞에다가 lazy 를 붙이면 된다.

  // lazy stored property
  lazy var myProfiles = [UIImage(named: "n"), UIImage(named: "c"), UIImage(named: "w"),
                    UIImage(named: "d"), UIImage(named: "a"),]

lazy는 사용하려고 할때 또는 접근하려고할때 그때 올라가는 property다.

computed property(계산)

특정한 값에 의해서 결정되는 값이 있다.
예를들어 성인이냐 등등

class MyInfo {
  
  // computed property(계산)
  var isAdult: Bool {
    if age > 19 {
      return true
    }
    return false
  }

}

이렇게 정해 놓으면 된다. 그러면 자동으로 나이를 입력했을때 성인인지 아닌지를 판별할수 있다.

다른 예시를 보면,

class MyInfo {
  
  // computed property(계산)
  // email -> 보안 -> 암호화 된 값으로 사용한다.(항상)
  var _email = "" //안에서사용할 변수
  var email: String {
    get{
      return _email
    }
    set{
      _eamil = newValue.hash.description
    }
  }

}

ley muInfo = MyInfo()
myInfo.email = "abc@text.com"

hash값을 암호화 하는 로직이라고 치고 실행하면 이메일이 바뀌는걸 확인할 수있다.

"21812902490120"

set은 다른 Properties에 값을 저장할때 사용하고(설정하는것)
get은 다른 Properties에 값을 얻거나 연산하여 리턴할때 사용한다.(항상 return구문이 존재)