티스토리 뷰
구조체와 클래스의 공통점
- 프로퍼티와 메서드를 사용해서 구조화된 데이터와 기능을 가진다.
- 새로운 사용자 지정 타입을 만들어 준다.
- 초기화 Init을 정의해서 초기 상태를 설정 할 수 있다.
- 확장(extension)이 가능하다.
- 프로퍼티값에 접근할 때 점(.)을 사용한다.
- 프로토콜 사용이 가능하다
다음 조건 중 1개 이상을 만족하면
- 구조체의 주 목적이 관계된 간단한 값을 캡슐화 하기 원할 때
- 구조체의 인스터스가 참조되기 보다 복사되기를 원할 때
- 구조체가 프로퍼티나 메소드 등을 상속 할 필요가 없는 경우
구조체를 사용 ! !
// struct
struct ValueType {
var property = 1
}
// class
class ReferenceType {
var property = 1
}
let firstStructInstance = ValueType()
var secondStructInstance = firstStructInstance
-> 이 과정에서 구조체 인스턴스가 하나 만들어져서 들어감.
secondStructInstance.property = 2
print("first struct instance property: \(firstStructInstance.property)") // 1
print("second struct instance property: \(secondStructInstance.property)") // 2
let firstClassReference = ReferenceType()
var secondClassReference = firstClassReference
-> 이 과정에서 참조값이 복사되는 것
secondClassReference.property = 2
print("first class instance property: \(firstClassReference.property)") // 2
print("second class instance property: \(secondClassReference.property)") // 2
값 타입 -> 데이터를 전달할 때 값을 복사하여 전달
참조 타입 -> 데이터를 전달할 때 값의 메모리 위치를 전달
간단하게 정리를 하자면 요렇게 설명할 수 있는데 ,,
잘 이해가 가지 않아서 다음 포스트에 자세히 정리해,, 보겠읍다,,
'Swift 문법 정리 - iOS' 카테고리의 다른 글
[Swift] assert? guard? (0) | 2021.08.24 |
---|---|
[Swift] 클로저 (0) | 2021.08.03 |
[Swift] 인스턴스 / 프로퍼티 / 메서드 (1) | 2021.08.02 |
[Swift] 열거형 (enum) (0) | 2021.08.01 |
[Swift] 클래스 (Class) (0) | 2021.08.01 |
댓글