접근제어, Access control Access Control, 접근 제어 다른 소스파일 및 모듈의 코드에서, 코드의 일부에 대한 액세스(접근)을 제한 Swift 접근 제어 모델은 모듈 및 소스파일의 개념을 기반으로 한다. 접근제어를 통해 객체 외부에서 객체내의 자료로의 접근을 제한하고 데이터를 수정,조작하는 동작은 내부에 두고 접근(getter),설정(setter)하는 메소드로 결과만 받도록 하는 객체의 은닉화를 가능하게 해준다 모듈 코드 배포(code distribution)의 단일 유닛 Xcode의 각 빌드 대상 ( 예 : 앱 번들 또는 Framework )은 Swift에서 별도의 모듈로 처리 소스파일 모듈 내의 단일 Swift소스 코드 파일 (사실상 앱 또는 Framework내의 단일 파일) Access Levels, 접근 레벨 o.. 2021. 12. 28. 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. 이전 1 ··· 7 8 9 10 11 12 13 ··· 32 다음