내일배움캠프 앱개발 iOS 트랙 본캠프 1주차
Today I Learned
성취
- 오늘의 나는 무엇을 했는지
- 구조체, 클래스, 열거형, 클로저... 사전캠프서 봤던것을 쭉 복습하다가 프로퍼티에 발이 턱 걸렸다😡
- 스위프트에서 사용한다는 ARC에 대한 내용을 공식 도큐먼트를 통해 학습했다
- 저장/연산 프로퍼티에 대한 내용을 학습했다
개선
- 어떤 문제를 겪었는지, 어떻게 해결할 것인지
ARC
- autumatic reference counting
- 자동 참조 세기
- 말 그대로 자동으로 참조의 갯수를 세어준 다음, 사용하지 않는다면 메모리를 해제해준다는 의미❗❗
- 왜 자동으로 해줄까?
- Heap에 저장되는 참조타입의 클래스는 원래대로라면 프로그래머가 직접 할당하고 해제를 해주어야 한다 -> 과거 오브젝티브 C 시절의 MRC
- 하지만❗ 오브젝티브 C에서 스위프트로 넘어오며 간편한 관리를 위해 스위프트가 개발해줬다👍
- ARC에 대한 더 자세한 필기
저장 프로퍼티
- 상수 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
연산 프로퍼티
학습
- 나는 어떤 것을 배웠는지
- 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 |