스위프트에서는 구조체와 클래스의 모습, 문법이 거의 흡사
1. 다만 구조체의 인스턴스는 값 타입, 클래스의 인스턴스는 참조 타입 !!
2. 값 타입의 데이터를 함수의 전달인자로 전달하면 메모리에 전달인자를 위한 인스턴스가 새로 생성
반면 참조 타입의 데이터를 전달인자로 전달할 때 기존 인스턴스의 참조를 전달하므로 새로운 인스턴스가 아닌 기존의 인스턴스 참 조를 전달.
3. 스위프트의 기본 데이터 타입은 모두 구조체
public struct String {
/// An empty 'String'
public init()
}
(Bool, Int, Array, Dictionary, Set 등등) String 타입과 마찬가지로 모두 구조체로 구현되어 있음
4. 구조체와 클래스 선택해서 사용하기
애플은 가이드라인 에서 다음 조건 중 하나 이상에 해당한다면 구조체를 사용하는 것을 권장
- 연관된 간단한 값의 집합을 캡슐화하는 것만이 목적일 때
- 캡슐화한 값을 참조하는 것보다 복사하는 것이 합당할 때
- 구조체에 저장된 프로퍼티가 값 타입이며 참조하는 것보다 복사하는 것이 합당할 때
- 다른 타입으로부터 상속받거나 자신을 상속할 필요가 없을 때
'swift > 잡다함' 카테고리의 다른 글
| extension, protocol, Higher_Order_Func (0) | 2021.06.16 |
|---|---|
| 기본 클로저 사용 (0) | 2021.06.07 |
| ARC (weak, unowned) (0) | 2021.06.01 |
| mutating (0) | 2021.02.17 |
| lazy (0) | 2021.02.17 |