티스토리 뷰
프로퍼티의 정의
- Struct, Class 와 같은 Object의 Data 파트입니다. (enum은 연산 프로퍼티만 가능)
- 저장 프로퍼티, 연산 프로퍼티, 타입 프로퍼티 등등 여러 종류가 있습니다.
저장 프로퍼티 (Stored Property)
- 값을 저장해서 변수로 들고 있는 것을 저장 프로퍼티라고 합니다.
struct Person {
var name: String = "Jun"
let gender: String = "Male"
}
연산 프로퍼티 (Computed Property)
- var 키워드만 가능합니다.
- 저장된 값을 이용해서 가공 혹은 계산된 값을 제공할 때 사용합니다.
- 연산 프로퍼티 내부에 get{ }, set{ } 을 설정할 수 있습니다.
- get{ }은 해당 프로퍼티를 호출하게 되면 실행되고 set{ }은 해당 프로퍼티에 값이 할당되면 실행됩니다.
- set{ }에서 새로 할당된 값은 newValue를 통해 받을 수 있습니다.
struct Person {
var yearOfBirth: Int = 1997
var age: Int {
get {
return 2022 - yearOfBirth
}
set {
yearOfBirth = 2022 - newValue
}
}
}
var person = Person()
person.age //25
person.age = 23
person.yearOfBirth //1999
타입 프로퍼티 (Type Property)
- 생성된 인스턴스와 상관없이 Struct, Class의 타입 자체의 속성을 정해줄때 사용합니다.
- Static을 사용합니다.
- 객체로 접근하지 않고 Struct, Class의 이름으로 접근합니다.
struct Person {
static var sayHello: String {
return "Hello"
}
}
Person.sayHello //Hello
프로퍼티 감시자(Property Observer)
- 프로퍼티의 값이 바뀔 떄 원하는 동작을 수행할 수 있는 기능입니다.
- didSet { }, willSet { } 이 있습니다.
- 연산 프로퍼티에는 사용할 수 없습니다.
didSet{ }
- 값이 바뀌었을 때 실행됩니다.
- oldValue로 이전 값을 불러오는 것이 가능합니다.
struct Person {
var name: String {
didSet {
print("개명 전 : \(oldValue), 개명 후 : \(name)")
}
}
var person = Person(name: "Jun")
person.name = "Kay"
// 개명 전 : Jun, 개명 후 : Kay
willSet{ }
- 값이 바뀌기 직전에 실행됩니다.
- newValue로 새로운 값을 불러오는 것이 가능합니다.
struct Person {
var name: String {
willSet {
print("곧 \(newValue)로 개명 될 겁니다.")
}
}
}
var person = Person(name: "Jun")
person.name = "Kay" // 곧 Kay로 개명 될 겁니다.
Reference :
'Swift' 카테고리의 다른 글
[iOS] 옵셔널 체이닝 (Optional Chaining) (0) | 2021.03.18 |
---|---|
[iOS] Swift Closure 정리 (0) | 2021.02.25 |
[iOS] Swift 열거형 (enum) (0) | 2021.02.22 |
[iOS] Swift Collection Types (Array, Dictionary, Set) (0) | 2021.02.17 |
[iOS] Swift Fuction 정리 (0) | 2021.02.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Xcode
- 프로세스
- 프로세스간통신
- PHImageRequestOptions
- 운영체제
- 스냅킷
- swiftsoup
- 개발동아리
- WKUIDelegate
- 멀티프로세스
- 부캠
- ios
- isNetworkAccessAllowed
- rxcocoa
- 쓰레드
- 디프만
- URLComponents
- 슈퍼스칼라
- optional
- sharedmemory
- RxSwift
- PHAsset
- 개발대외활동
- OS
- 스레드
- Swift
- setBackgroundColor
- webcrawl
- returnKey
- cs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함