1. class
- 참조 타입
- ARC로 관리
- 상속 가능
2. struct
- 값 타입
- 변수에 할당 할때마다 새로운 구조체로 할당
아래와 같이 class와 struct이 있다고 할때
class class_ex{
var a : Int = 0
deinit{
print("참조 없음")
}
}
struct struct_ex{
var a : Int = 0
}
class는 참조 방식이므로 Cclass.a의 값을 변경하면 같은 class를 참조하는 다른 변수들도 영향을 받고
struct는 값 방식이므로 값을 변경해준 Astruct.a와 Bstruct.a는 2,1로 각각 바뀝니다.
var Aclass = class_ex()
var Bclass = Aclass
var Cclass = Aclass
Cclass.a = 1
print(Aclass.a) // 1
print(Bclass.a) // 1
print(Cclass.a) // 1
var Astruct = struct_ex()
var Bstruct = Astruct
var Cstruct = Astruct
Astruct.a = 2
Bstruct.a = 1
print(Astruct.a) // 2
print(Bstruct.a) // 1
print(Cstruct.a) // 0
마지막으로 class의 경우에는 참조이므로
하나의 변수에 참조시 2개의 참조 카운트부터 시작하여 늘어나고
할당 해제시 하나씩 줄어들어 총 참조 카운트 2개인 경우에 할당 해제시 0개로 deint가 수행됩니다.
'Swift개발' 카테고리의 다른 글
[Swift] SnapKit, Autolayout기본적인 기능 사용하기 (0) | 2022.05.20 |
---|---|
[Swift]3년차 개발자의 좋은 개발자에 대한 고찰기(?) (0) | 2022.05.17 |
[Swift]GoogleMap API, 현재 지도뷰의 중심 좌표 가져오기 (0) | 2022.05.16 |
[Swift]if let VS. guard let, nil coelescing operator(nil병합 연산자) (0) | 2022.05.16 |
[Swift]Emoji 포함 문자 인코딩, 디코딩 (0) | 2022.05.11 |