Link
Notice
HIT해
[Swift 기초문법 - 6] Class vs Struct 본문
728x90
클래스와 구조체는 여러 정보를 담고 있는 모델을 만들어낼때 사용한다.
두가지는 비슷하지만 저장되고 이용되는 방식에 차이가 있다.
우선 구조체를 살펴보자.
struct AboutFriendStruct {
var name : String
var age : Int
}
var woojin = AboutFriendStruct(name: "peperoni", age: 27)
var woojinclone = woojin
print("before clone.name \(woojinclone.name)")
woojinclone.name = "천우진"
print("after clone.name \(woojinclone.name)")
print("before original.name \(woojin.name)")
woojinclone.name = "바보"
print("after original.name \(woojin.name)")
실행결과
구조체는 다른 변수에 담았을 때 변경을 하더라도 원본값이 바뀌지 않는다.
클래스를 살펴보자
class AboutFriendClass {
var name : String
var age : Int
// 생성자 - 메모리에 올리는 작업
// init 으로 매개변수를 가진 생성자 메소드를 만들어야
// 매개변수를 넣어서 그 값을 가진 객체를 만들 수 있다.
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
var sangjun = AboutFriendClass(name: "brother", age: 28)
var sangjunclone = sangjun
print ("before sangjunclone.name \(sangjunclone.name)")
sangjunclone.name = "안상준"
print ("after sangjunclone.name \(sangjunclone.name)")
print("before sangjun.name \(sangjun.name)")
클래스는 복사한 변수의 값을 변경하면 원본값도 변경되는 특성을 가지고 있다.
실행결과
서로 연결되어있는 특성을 지니고 있다.
Why? Struct는 생성될때마다 다른 곳에 생성을 하는데 클래스는 메모리 주소를 가리키고 있는데 ( 이를 참조라고함 )
복사를 하면 같은 메모리 주소를 참조하고 있고 데이터를 바꾸면 참조하는 값들 모두 변화한 값을 지닐 수 있게 된다.
클래스와 구조체의 차이는 추후 포스팅을 통해 자세히 설명하도록 하겠습니다.
'Swift > 기초문법' 카테고리의 다른 글
[Swift 기초문법 - 8] 함수 매개변수 이름 (1) | 2024.07.11 |
---|---|
[Swift 기초문법 - 7] 프로퍼티 옵저버 (0) | 2024.07.11 |
[Swift 기초문법 - 5] Unwrap 옵셔널 변수 (0) | 2024.07.09 |
[Swift 기초문법 - 4] For 반복문 (0) | 2024.07.09 |
[Swift 기초문법 - 3] enum 케이스 나누기 (0) | 2024.07.09 |