패스트캠퍼스 챌린지 13일차
오늘은 구조체의 프로퍼티에 대해서 학습을 하였다.
기본적인 프로퍼티는 구조체 내에 변수를 선언을 하면 된다.
struct Person {
// stored property
var firstName: String
var lastName: String
// computed property
var fullName: String {
get {
return "\(firstName) \(lastName)"
}
set {
if let firstName = newValue.components(separatedBy: " ").first {
self.firstName = firstName
}
if let lastName = newValue.components(separatedBy: " ").last {
self.lastName = lastName
}
}
}
}
이는 stored property라고 하고 var 보다는 let을 이용을 해서 선언을 하는 것이 권장된다.
이에 비교되는 property로는 computed property라고 있다. 접근자를 지정을 해줌으로써
사용을 할 때 원하는 형식으로 값을 반환을 할 수가 있다.
기본적으로 get, set 지정자를 선언해주지 않으면 값을 얻어오기만 하고 설정을 할 수 없다는 특징이 있다.
위의 코드에서는 get, set 지정자를 만들어줬기 때문에 값을 설정할 수 있는 것이다.
그다음 프로퍼티 종류로는 type property가 있다.
인스턴스에 상관없이 구조체 타입 자체에 정의되는 프로퍼티다.
클래스로 따지면 클래스 변수라고 생각할 수 있다.
프로퍼티는 didSet 키워드를 이용해서 바뀌는 시점을 알 수 있다.
즉 observation을 할 수 있는데, didSet외에 willSet이라는 키워드도 존재한다.
willSet이 먼저 일어나고 didSet은 그 다음에 일어난다.
이벤트처리 방식을 고려하여 이런 기능을 넣은 것 같다.
다른 키워드로 lazy를 이용해서 lazy property를 만들 수 있다.
lazy는 사용하기전에 뭔가를 계산하기 부담스러운 것들을 처음 호출할 때 계산을 하도록 하는 것이다.
즉 사용하기 전까지는 아무런 부하도 가하지 않도록 설계할 수 있다.
오늘까지 구조체의 프로퍼티까지 학습을 완료하였다.
내일은 구조체의 메소드 공부를 끝으로 구조체는 끝낼 예정이다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #iOS앱개발올인원패키지