Struct VS Class

HOS·2021년 10월 9일
0

Swift

목록 보기
1/2
post-thumbnail

Struct와 Class 의 차이점

차이점

  • Struct는 상속할 수 없다
  • 타입캐스팅은 Class의 instance에만 할 수 있다.
  • Deinitializers는 Class의 instance에만 활용할 수 있다.
  • Reference counting(참조 횟수 카운팅)은 Class의 instance에만 허용 된다.

가장 일반적인 답변

Struct is Valute Type & Class is Reference Type

근데 이게 무슨 말이냐면..

코드 예시로 설명을 하자면..


Struct

struct Person {
    var name: String = "SUHUN"
}

var i = Person()
print(i.name) 			// SUHUN 출력
var you = i 			// 복사
print(you.name) 		// SUHUN 출력

// #1
i.name = "Test Name"
print(i.name)   		// Test Name 출력
print(you.name)			// SUHUN 출력


// #2
you.name = "Your Name Test"
print(i.name) 			//SUHUN 출력
print(you.name) 		// Your Name Test 출력

i.name 과 you.name은 이미서로 다른 인스턴스이다.
따라서 값 타입은 아무리 원본을 복사해도 다시 복사를 해주지 않는 한
각 인스턴스는 각각의 값을 갖게 된다.

Class

class People {
    var name : String = "suhun"
}

var mine = People() 	
print(mine.name)		// print "suhun"
var your = mine			// copy
var third = mine		// copy for The 3rd
print(your.name)		// print "suhun"
your.name = "Test Name"		// 복사 한 인스턴스의 값 변경
				// 참조한 데이터까지 변경
print(mine.name)		// print "Test Name"
print(your.name)		// print "Test Name"

Class(참조타입) 참조타입은 한번 복사하고 나면
해당 값을 참조한 원본까지 모두 값이 변경된다.


애플 공식 문서 참조
iDO 님 블로그 참조

profile
Creative Developer

0개의 댓글