티스토리 뷰

구조체와 클래스의 공통점 

  • 프로퍼티와 메서드를 사용해서 구조화된 데이터와 기능을 가진다.
  • 새로운 사용자 지정 타입을 만들어 준다.
  • 초기화 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함