반응형
안녕하십니까 공부하는 개발자 입니다.
오늘 포스팅은 저장속성에 대해서 포스팅 하려고 합니다.
🔔 저장속정
저장속성은 가장 간단한 형태의 저장 속성은 특정 클래스 또는 구조 인스턴스의 일부로 저장되는 상수 또는 변수입니다.
인스턴스임으로 선언을 할때마다 새로운 메모리에 할당됩니다.
var키워드로 선언을 하면 변수저장 속성이고 let은 상수저장 속성입니다.
1
2
3
4
5
6
7
8
|
class Person{
let name: String = "John Doe"
var age : Int = 33//var이기 때문에 변경 가능
}
struct Person1{
let name: String = "John Doe"
var age : Int = 33//var이기 때문에 변경 가능
}
|
cs |
🔔Explicit Member Expression
Explicit Member Expression은 영어로 써놓았지만 다들 쓰고있는 기능이다.
1
2
3
|
let p = Person()
p.name
p.age
|
cs |
swift의 경우에는 다른 언어에서도 쓰이는 점문법(Dot Syntax)를 명시적 멤버 표현식(Explicit Member Expression)이라고 한다.
🔔 Lazy Stored Properties
Lazy Stored Properties은 한국어로 저장지연속정이다.
일반적인 저장속성의 경우에는 인스턴스와 초기화되는 시점이 똑같은데
Lazy Stored Properties의 경우에는 초기화가 요소에 접근시에 이루어 집니다.
Lazy Stored Properties는 초기화 되는 시점이 다르기때문에 항상 var로 선언을 해주어야합니다.
lazy var name: Type = defaultValue
기본적으로 일반 선언앞에다가 lazy를 붙여주면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
struct Image{
init(){
print("new Image")
}
}
struct BlogPost{
let titke: String = "Title"
let content : String = "Content"
lazy var attachment : Image = Image()
let date: Date = Date()
lazy var formattedDate: String = {
let f = DateFormatter()
f.dateStyle = .long
f.timeStyle = .medium
return f.string(from: date)
}() //클로저가 ()를 쓴다면 초기화될때 실행된다
}
//lazy를 선언하기 전에는 콘솔이 출력되었지만 선언 후에는 출력되지않음
//또한 구조체를 선언한 부분에도 let이면 값을 변경 할 수 없기 때문에 var를 써야한다.
var post = BlogPost()
post.attachment
|
cs |
반응형
'Ios > Swift' 카테고리의 다른 글
[Swift] Property Observer 스위프트 속성 감시자 (0) | 2022.07.12 |
---|---|
[Swift] Computed Properties 스위프트 계산속성 (0) | 2022.07.11 |
[Swift] Structure & Class 스위프트 구조체와 클래스 (0) | 2022.07.09 |
[Swift] Swift Collection Set 스위프트 set (0) | 2022.06.30 |
[Swift] Swift Collection Dictionary 스위프트 딕셔너리 (0) | 2022.06.29 |