iOS/Swift문법
[Swift 문법] class와 struct - day3
안드뽀개기
2022. 3. 7. 08:57
반응형
1. struct
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//클래스(class) vs 스트럭트(struct) | |
// struct는 프로퍼티에 값을 저장하는 데이터 모델 | |
// 생성자x | |
// 유튜버 (데이터) 모델 - struct 구조체 | |
struct YoutubeStruct { | |
var name: String | |
var subscribersCount: Int | |
} | |
var devKim = YoutubeStruct(name: "이름", subscribersCount: 1000) | |
var devKimClone = devKim | |
print("값 넣기 전 devKimClone.name : \(devKimClone.name)") | |
devKimClone.name = "호호호" | |
print("값 넣은 후 devKimClone.name : \(devKimClone.name)") | |
print("값 넣은 후 devKim.name : \(devKim.name)") | |
결과값 | |
값 넣기 전 devKimClone.name : 이름 | |
값 넣은 후 devKimClone.name : 호호호 | |
값 넣은 후 devKim.name : 이름 |
2. class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 클래스 | |
// 생성자o | |
class YoutuberClass { | |
var name: String | |
var subscribersCount: Int | |
// 생성자 - 메모리에 올리는 과정 | |
// init으로 매게변수를 가진 생성자 메소드를 만들어야 | |
// 매개변수를 넣어서 그 값을 가진 객체를 만들 수 있다. | |
init(name: String, subscribersCount: Int) { | |
self.name = name | |
self.subscribersCount = subscribersCount | |
} | |
} | |
var devNim = YoutuberClass(name: "이름", subscribersCount: 1000) | |
var devNimClone = devNim | |
print("값 넣기 전 devNimClone.name : \(devNimClone.name)") | |
devNimClone.name = "호호호" | |
print("값 넣은 후 devNimClone.name : \(devNimClone.name)") | |
print("값 넣은 후 devNim.name : \(devNim.name)") | |
결과값 | |
값 넣기 전 devNimClone.name : 이름 | |
값 넣은 후 devNimClone.name : 호호호 | |
값 넣은 후 devNim.name : 호호호 |
위의 두 결과에 대한 설명
: struct의 경우는 하나, 하나가 개별의 값이라고 생각하면된다. 위의 예제에서 devKim과 devKimClone은 별개의 값을 가지는 data model 변수이고, class의 경우는 devNim과 devNimClone이 서로 연결된 상태라고 보면된다. 그 이유는 두 변수가 같은 메모리 주소를 가르키기 때문이다.
반응형