본문 바로가기

전체 글35

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(love)의 .. 2022. 5. 8.
Swift로 보는 SOLID(ISP,DIP) SOLID SOLID란.. S (Single Responsibility Principle) : 단일 책임 원칙 O (Open/Close Principle) : 개방/폐쇄 원칙 L (Liscov Substitution Principle) : 리스코브 치환 원칙 I (Interface Segregation Principle) : 인터페이스 분리 원칙 D (Dependency Inversion Principle) : 의존성 역전 원칙 으로 이루어져 있는 객체지향프로그래밍에서 요구하는 원칙 들이다. ISP(인터페이스 분리 원칙) 클라이언트 객체 (구체 타입 또는 추상화된 인터페이스든) 사용하지 않는 메소드에 의존하면 안된다. ISP를 알아보기 위해 간단한 예제를 만들어보자. Cafe를 사용하는 유저가 3명이 있.. 2022. 5. 6.
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.