본문 바로가기
SOLID 원칙 SOLID 원칙 로버트.C마틴이 "객체 설계"를 할 때 중요하게 생각하는 것으로 제시한 다섯 가지 원칙 장점 1. 모듈화를 통해 재상용성이 높은 코드를 만들고 생산성을 높일 수 있다 2. 테스트 가능한 코드를 만들고 관리할수있어, 테스트 코드의 장점을 취할수 있다. TDD : https://yongminlee26.tistory.com/348?category=569784 3. 변경에 유연하며 확장성이 높은 코드를 만들수 있다. 4. 유지보수의 리소스가 줄어든다. 종류 1. SRP (Single-Responsibility Principle), 단일 책임 원칙 2. OCP (Open-Close Principle), 개방 폐쇄 원칙 3. LSP (Liskov Substitution Principle), 리스코프.. 2021. 12. 23.
Repository 패턴 Repository 패턴이란 - 데이터 출처(로컬 DB인지 API응답인지 등)와 관계 없이 동일 인터페이스로 데이터에 접속할 수 있도록 만드는 것 - viewModel은 내가 원하는 데이터가 로컬껀지 서버껀지 알 필요없이 그냥 repository에게 요청 - viewModel 밑에 Repository라는 layer를 하나 더 두어서 viewModel은 오직 비즈니스로직만 집중 - 데이터를 로컬과 서버 중 어디서 가져올지, 또 어떻게 가공할지는 Repostitory가 한다 - viewModel들간 Repository를 공유해서 데이터 일관성을 유지한다. 참고 https://eunjin3786.tistory.com/198 2021. 12. 8.
Method Dispatch Method Dispatch 프로그램이 어떻게 해당 메소드를 실행할지 정하는 것 Static Dispatch vs Dynamic Dispatch 1. Static Dispatch = Direct Dispatch = Direct Call "컴파일 타임"에 호출될 함수를 결정 컴파일 타임에 결정이 나기 때문에 성능상 이점 Value Type인 구조체, 열거형은 상속을 할 수 없다는 특징 때문에 오버라이딩이 될 가능성이 없고, 따라서 Static Dispatch를 사용 2. Dynamic Dispatch = Indirect Call "런타임"에 호출될 함수를 결정한다 Swift에서는 클래스마다 함수 포인터들의 배열인 vTable(Virtual Dispatch Table)이라는 것을 유지 하위 클래스가 메서드를.. 2021. 12. 6.
KVO, Key-Value Observing 1. KVC란? KVC, Key-Value Coding KVC란, 객체의 값을 직접 가져오지않고, Key 또는 KeyPath 를 이용해서 간접적으로 데이터를 가져오거나 수정하는 방법 struct Person { var name : String } var person = Person(name:"lee") // 객체의 값 직접 가져오기 let myName = person.name // KeyPath 를 이용해서 데이터를 가져오기 let nameKeyPath = \\.Person.name let myName = person[keyPath: nameKeyPath] Key Path를 만드는법 Key Path 종류 KeyPath Read-only WritableKeyParh value type 인스턴스에 사용 가능.. 2021. 12. 6.
Notification Service Extension Notification Service Extension app extension의 기능중 하나로써 수신되는 Remote Notification에 이미지를 넣거나 내용을 수정하는 등의 확장 기능을 제공한다 Notification Service Extension을 생성하게 되면 UNNotificationServiceExtension 클래스가 프로젝트 내부에 임베드 되는다 해당 클래스를 이용하여 Push Notification이 AppDelegate에서 처리되기전에 Push Notification을 수정한다. Push Notification의 페이로드 내부에 "mutable-contnetn" 키가 존재하고 해당 키의 값이 반드시 1 또는 true로 설정되어야 Push가 수정될 수 있다. Push Notific.. 2021. 12. 6.
App Extension App Extension 기존의 애플리케이션의 기능을 확장하여 개발할 수 있도록 도와주는 기능을 제공 Notification Service Extension 등등 기존의 애플리케이션에 있는 특정 기능을 다른 애플리케이션에서 접근할 수 있도록 하는 기능도 제공한다 이때 다른 애플리케이션은 익스텐션 포인트를 이용하여 기존의 애플리케이션(호스트 앱)의 기능을 이용한다 익스텐션 포인트 today extension share extension action extension 등등 한마디로 익스텐션은 애플 프레임웍을 통해서 호출되는 기능들의 집합 빌드될때 추가적인 타겟을 통해 따로 빌드되며 설치될때는 앱과 같이 설치, 삭제될때도 앱과 함께 삭제된다. (바이너리 자체도 앱과 독립적이다) 실행시에도 앱과는 완전히 다른 .. 2021. 12. 6.