내일배움캠프 앱개발 iOS 트랙 본캠프 1주차
Today I Learned
성취
- 오늘의 나는 무엇을 했는지
- 구조체, 클래스, 열거형, 클로저... 사전캠프서 봤던것을 쭉 복습하다가 프로퍼티에 발이 턱 걸렸다😡
- 스위프트에서 사용한다는 ARC에 대한 내용을 공식 도큐먼트를 통해 학습했다
- 저장/연산 프로퍼티에 대한 내용을 학습했다
개선
- 어떤 문제를 겪었는지, 어떻게 해결할 것인지
ARC
- autumatic reference counting
- 자동 참조 세기
- 말 그대로 자동으로 참조의 갯수를 세어준 다음, 사용하지 않는다면 메모리를 해제해준다는 의미❗❗
- 왜 자동으로 해줄까?
- Heap에 저장되는 참조타입의 클래스는 원래대로라면 프로그래머가 직접 할당하고 해제를 해주어야 한다 -> 과거 오브젝티브 C 시절의 MRC
- 하지만❗ 오브젝티브 C에서 스위프트로 넘어오며 간편한 관리를 위해 스위프트가 개발해줬다👍
- ARC에 대한 더 자세한 필기
[Swift] ARC/strong/weak/reference cycles(참조 순환)
애플 스위프트 공식 문서의 첫 문단 더보기 Swift uses Automatic Reference Counting (ARC) to track and manage your app’s memory usage. In most cases, this means that memory management “just works” in Swift, and you don’t need to think
yy-dev.tistory.com
저장 프로퍼티
- 상수 let 으로 선언된 인스턴스 A 에 (참조 타입인)클래스 B를 할당해주면, 클래스 안의 프로퍼티는 변경이 가능할까?
- 정답은👀 변경할 수 있다! 변수라면.
- 클래스안에서 상수로 선언된 프로퍼티는 변경이 불가능하고, 변수로 선언된 프로퍼티는 변경할 수 있다
- A는 상수인데, 어떻게 B의 프로퍼티를 수정할 수 있는거죠?
- A는 stack이라는 임시 메모리 저장소에 할당된 상수, B는 heap에 할당된 클래스
- A를 상수로 선언했다 하더라도 클래스 메모리의 주소값을 받아온 것이기 때문에 클래스를 수정하는데는 문제가 없다
- 상수 A의 주소값을 바꿀 수 없다는 뜻
- A를 B가 아닌 다른 것으로 바꾸려고 하면 그때 에러 발생
class B {
let name: String = "Yenny"
var age: Int
}
let A = B()
// 가능
A.age = 200
// 에러 발생
A.name = "Tom"
A = nil . . . etc
연산 프로퍼티
[Swift] 연산 프로퍼티 Computed Property
연산 프로퍼티 - 특징 저장 공간을 가지지 않음 직접 값을 가지지는 않지만, 저장 프로퍼티의 값을 읽어서 연산 실행 항상 var로 선언해야 함 선언할 때 반드시 자료형을 명시해야 함 var westernAge:
yy-dev.tistory.com
학습
- 나는 어떤 것을 배웠는지
- ARC와 저장/연산 프로퍼티에 대한 이해도가 수직상승한 것 같다
- 특히 클래스를 이용하는 값의 할당에 대해 (이론적으로나마) 파악한 것 같아서 기분이 좋다
- ARC가 스위프트에서 중요한 개념이라고 하던데 실제로 메모리 관리를 체감해보고 싶어졌다
- 더 필요하다고 생각하는 것
- 자료구조에 대한 심도깊은 이해
- unowned와 클로저에 대해 공식 문서를 자세히 읽어보기
'TIL' 카테고리의 다른 글
[TIL] 2023.11.22 | Git, Github (0) | 2023.11.22 |
---|---|
[TIL] 2023.11.21 | 상속 Inheritance 재정의(오버라이딩) Overriding (1) | 2023.11.21 |
[TIL] 2023.11.18 | 알고리즘 (0) | 2023.11.18 |
[TIL] 2023.11.17 | Git, GitHub (0) | 2023.11.17 |
[TIL] 2023.11.15 구조체, Xcode StoryBoard (0) | 2023.11.15 |