SWIFT(27)
-
[iOS_CS] COW(Copy On Write) 이해하기
오늘은 간단히 이해할 수 있으면서도 프로그래밍을 함에 있어서 알아두면 좋을 개념을 하나 정리하고 가려고 한다! 값 타입과 참조 타입 COW를 설명하기에 앞서, 하나 짚고가야할게 있다. 값 타입(Value Type)과 참조 타입(Reference Type)에 대해서인데, 알다시피 구조체는 값 타입이고 클래스는 참조 타입이다. 따라서, 아래와 같은 예시 상황에서 클래스는 인스턴스 주소를 참조하는 상황이 발생하고 구조체는 인스턴스 값을 복사하는 현상이 발생한다. class SoldierClass { var name = "Ethan" } struct SoldierStruct { var name = "Park" } var aSolider = SoldierClass() var bSoldier = aSolider b..
2022.03.06 -
[iOS_Service Level Project(SLP)] Clean Architecture 적용기 (2) - Dependency, Clean Architecture 적용 이유에 대하여
이 글은 약 5주간 진행했던 Service Level Project(이하 'SLP')를 회고 및 정리하기 위한 글이다. 이번 프로젝트를 진행하면서 새로운 시도를 많이 했는데 그 중 가장 큰 도전이었던 MVVM + Clean Architecture(클린 아키텍처) 적용에 대해서 정리하려고 한다. 목차는 다음과 같다. 2편에서는 4번부터 다루겠다. 1. Clean Architecture(클린 아키텍처)란? 2. MVVM + Clean Architecture의 구성요소 3. 전반적인 Flow 4. Dependency(의존성)와 Dependency Inversion(의존성 역전) 5. SLP에 왜 Clean Architecture를 적용하였는지? 6. Clean Architecture 적용 후기 및 회고 < 1..
2022.02.28 -
[iOS_Service Level Project(SLP)] Clean Architecture 적용기 (1) - MVVM과 Clean Architecture
이 글은 약 5주간 진행했던 Service Level Project(이하 'SLP')를 회고 및 정리하기 위한 글이다. 이번 프로젝트를 진행하면서 새로운 시도를 많이 했는데 그 중 가장 큰 도전이었던 MVVM + Clean Architecture(클린 아키텍처) 적용에 대해서 정리하려고 한다. 목차는 다음과 같다. 1편에서는 3번까지만 다루겠다. 1. Clean Architecture(클린 아키텍처)란? 2. MVVM + Clean Architecture의 구성요소 3. 전반적인 Flow 4. Dependency(의존성)와 Dependency Inversion(의존성 역전) 5. SLP에 왜 Clean Architecture를 적용하였는지? 6. Clean Architecture 적용 후기 및 회고 1...
2022.02.25 -
[iOS_Swift] Generic(1) - Generic Basic
오늘은 Swift에서 너무나 자주 유용하게 쓰이는 Generic(제네릭)에 대해서 다뤄보려고 한다. 먼저 공식문서부터 살펴보자! 공식문서 시작부터, 제네릭에 대한 극찬으로 가득하다. 요약해보자. 제네릭 코드는 사용자가 아주 flexible하고 reusable한 함수와 타입을 작성하게 해준다. 사용자는 제네릭을 사용함으로써 코드 중복을 피할 수 있고 명확하게 사용자의 의도를 표현할 수 있다. 제네릭은 스위프트의 가장 powerful한 특징 중에 하나이다. 또, Swift standard library의 대부분이 제네릭 코드로 만들어졌다. 사실 사용자는 알게 모르게 제네릭을 사용하고 있는 중이다. 예를 들어, 배열과 딕셔너리 타입들도 모두 제네릭 콜렉션 타입이다. 사용자는 제네릭 코드를 사용함으로써, 어떠한..
2022.02.14 -
[iOS_Swift] inout Parameter에 대하여
오늘은 간단한 개념에 대해서 짚고 넘어가보려 한다. 원래는 제네릭 관련 글을 포스팅하려다가 공식 문서를 살펴보고 있었는데, 공식 문서 예시에서 inout 파라미터를 사용하고 있었다. 처음 보는 개념이어서 해당 개념을 학습하다가 결국 글까지 포스팅하게 됐다. 먼저 inout Parameter 공식 문서부터 살펴보자. 총 세 문단으로 이뤄져 있고 핵심 내용만 요약해서 설명하면, 함수의 파라미터들은 기본적으로 상수이다. 따라서, 함수의 파라미터 값들을 함수 내부 바디에서 바꾸려고 하면 컴파일 에러를 일으킨다. 만약 사용자가 파라미터의 값들을 바꿔주고, 해당 값이 함수가 끝난 뒤에도 유지되기를 원한다면 inout 파라미터를 사용할 수 있다. 사용자는 inout 키워드를 파라미터 타입 좌측에 적어 둠으로써 사용할..
2022.02.10 -
[iOS_Swift] Properties - 지연 저장 프로퍼티(Lazy Stored Property)
지연 저장 프로퍼티란? 우선 공식문서의 정의를 살펴보면, 지연 저장 프로퍼티는 해당 프로퍼티가 처음으로 사용되어지기 전까지 최초의 값을 계산하지 않는 프로퍼티이다. 즉 사용되어지기 전까지는 nil을 할당 받는 것이다. 지연 저장 프로퍼티가 대충 무엇인지는 이제 알겠다. 그렇다면 이 개념을 언제 사용하고 왜 알아두면 유용한지 구체적으로 이해해보자. 언제 사용할까? 1. 어떤 프로퍼티의 최초 값이 외부 다른 인스턴스의 영향을 받을 때. 이 부분을 이해하기 위해서는 공식 문서에 있는 예시 코드를 잠시 활용해보자. 위의 예시 코드를 보면, 2개의 클래스 DataImporter, DataManager가 있다. 그리고 DataManager클래스의 프로퍼티 중에 DataImporter의 인스턴스를 가지는 지연 저장 ..
2022.02.06