Swift13 Memory Leak Case When ReferenceType in Dictionary 알다시피 Swift에서 Dictionary는 Struct이고 Value Type이다. 그렇다면, 이 Dictionary에 ReferenceType인 Class를 Value나 Key로 넣으면 어떻게 될까? 예시를 통해 알아보자. name이라는 Property를 가지고 있는 Class A와 B가 있다. class A { var name: String = "Park" deinit { print("A deinit!") } } class B { var name: String = "Kim" deinit { print("B deinit!") } } Class AB는 String을 Key값으로 String, AnyObject(Class)를 Value로 넣을 수 있는 Dictionary를 가지고 있다. class AB .. 2022. 5. 11. 깊은 복사 & 얕은 복사 (Swift) 값타입(ValueType) & 참조타입(ReferenceType) Swift에서는 모든 데이터 타입이 'ValueType'이거나 'ReferenceType'으로 이루어져있다. 대표적인 ValueType으로는 Struct,Enum 등등 이 있고 대표적인 ReferenceType으로는 Class를 들 수 있을 것이다. 이 두 Type은 다른 차이점들이 많지만, 가장 큰 차이점은 'Copy를 하는 방식'이다. 얕은 복사 (Shallow Copy) 얕은 복사는 '주소값을 복사'하는 복사 방식이다. 따라서, 값을 복사할때 새로운 메모리 공간을 할애하여 복사하는 것이 아니라 주소값을 복사한다. 우리가 주로 Class를 새로 선언하고 다른 변수에 복사를 할때 일어나는 일과 같다. 따라서, A클래스의 Property(.. 2022. 5. 8. MetaType_iOS 메타타입이란? Type의 Type임. - 애플 . ??? 1. Type 그 자체 2. Type을 다시 추상화? 3. 언제씀? Type 그 자체를 사용하고 싶을 때. 라고.. 하는데 잘 모르겠어서 하나하나 단어를 분해해보았다. Meta가 뭘까? 메타(meta)란... 메타는 위키백과에서 많은 의미를 가지는데 이중에서 눈여겨 봐야할 것은 스스로 인 것 같다. Type 그 자체(스스로) 뭔가 값을 가지고 있는 Type이라고 이해를 일단 해보았다. Type이 뭘까? Type is like MBTI - 포프리 Type이란 어떠한 속성들을 모아서 분류하여 설명하는 것이라고 할 수 있다. 예를들어 그림의 MBTI를 보면, ISTJ라는 타입은 세상의 소금형, 한번 시작한 일은 끝까지 해내는 사람 이라는 속성을 가지고 .. 2022. 5. 5. 동시성 프로그래밍 가이드 읽어보기. 동시성 프로그래밍을 이해하기 위해 애플의 문서를 읽어보았다. 동시성과 어플리케이션 다자인(Concurrency and Application Design) 과거에는 컴퓨터가 수행할 수 있는 단위 시간당 최대 작업량이 CPU의 클럭 속도에 의해 정해졌었음. 하지만, 기술이 발전하고 프로세서의 설계가 compact해짐에 따라 열과 같은 물리적 제약이 최대 클럭 속도를 제한하기 시작했다. 이 문제를 해결하기 위해 각 칩의 프로세서 코어 수를 늘리기 시작했다 (싱글코어 -> 듀얼코어,쿼드코어 등등) 코어수를 늘리면 CPU속도를 높이거나 칩 크기 등을 바꾸지 않아도 단일 칩에서 초당 더 많은 명령을 실행할수 있었다. 이제 추가된 이 코어들을 잘 활용을 해야하는데... 당연히 계산할 수 있는 코어가 늘었으니 컴퓨터에.. 2022. 1. 27. 이전 1 2 3 4 다음