- 코드
유튜버 "개발하는 정대리"님의 학습코드자료입니다.
struct YoutuberStruct {
var name : String
var subscribersCount : Int
}
var devJeong = YoutuberStruct(name: "정대리", subscribersCount: 99999)
var devJeongClone = devJeong
print("======== struct =========")
print("값 넣기 전 devJeongClone.name : \(devJeongClone.name)")
devJeongClone.name = "호롤롤로"
// 값 복사이기 때문에 둘의 값이 다르다
print("값 넣은 후 devJeongClone.name : \(devJeongClone.name)")
print("값 넣은 후 devJeong.name : \(devJeong.name)")
print("======== class =========")
// 클래스
class YoutuberClass {
var name : String
var subscribersCount : Int
// 생성자 - 즉 메모리에 올린다
// init 으로 매개변수를 가진 생성자 메소드를 만들어야
// 매개변수를 넣어서 그값을 가진 객체(object)를 만들수 있다.
init(name: String, subscribersCount: Int){
self.name = name
self.subscribersCount = subscribersCount
}
}
var jeongDaeRi = YoutuberClass(name: "정대리", subscribersCount: 99999)
var jeongDaeRiClone = jeongDaeRi
print("값 넣기 전 jeongDaeRiClone.name : \(jeongDaeRiClone.name)")
jeongDaeRiClone.name = "호롤롤롤로"
print("값 넣은 후 jeongDaeRiClone.name : \(jeongDaeRiClone.name)")
print("값 넣은 후 jeongDaeRi.name : \(jeongDaeRi.name)")
struct는 내가 미리 양식을 만들어 그 양식을 복사해서 사용(새로운 변수에 넣어 접근)하는 것이기 때문에 값을 바꾸어도 원래 양식의 있는 값은 변하지 않지만
class는 값을 바꾸면 원래 있던 양식의 값이 바뀌기 때문에 class와 struct는 다르다.
- 출력
값의 변화의 차이를 주목할것
+2023.12.02
한번 더 알게 된 사실이
struct는 메모리를 매번 새롭게 할당하여 값을 준다는것이고
class는 메모리를 ARC(aotomatic reference counting)를 사용하여 관리한다는 것이다
class는 메모리 관리가 중요한데, 어디서 메모리를 종료해야하는지의 시점이 결국 성능저하 문제로 이어질 수 있기 때문에
ARC를 활용하여 한정된 메모리 자원을 아껴준다.
(ARC는 말 그대로 메모리참조를 자동으로 카운팅하여 더이상 필요하지 않은 메모리 자원점유를 할당해제한다.)
개발자들에게 메모리 관리는 민감한 문제이므로 이를 잘 활용한것이 ARC인것같다.
struct : 값타입
class : 참조타입
'Swift > Swift 언어이해' 카테고리의 다른 글
swift mutating func 키워드란? (1) | 2023.12.02 |
---|---|
for ~ in과 for each의 차이 (0) | 2023.11.04 |
프로퍼티 옵저버란? (0) | 2023.10.30 |
Swift 모든 문법 정리 (1) | 2023.10.21 |
Swift 기본문법 공부 (1) | 2023.04.28 |