장점 테스트에 용이 종속성, 결합도 감소 유연성, 확장성 증가 의존관계 설정 가능 의존성 class SomeController { var fooManager = FooManager() } SomeController는 FooManager 클래스에 의존관계가 생깁니다. 의존성 주입하는 방법이 3가지를 소개합니다. Initializer Injection class SomeController { var fooManager: FooManager init(fooManager: FooManager) { self.fooManager = fooManager } } let manager = FooManager() var someController = SomeController(fooManager: manager) Prop..
https://docs.swift.org/swift-book/LanguageGuide/Properties.html Property Wrappers 프로퍼티 래퍼는 프로퍼티를 어떻게 저장할지를 관리하는 코드와 프로퍼티를 정의하는 코드를 분리하는 레이어를 추가합니다. 스레드 세이프 체크나 데이터베이스에 기본 데이터를 저장하는 프로퍼티를 가지고 있다면, 모든 프로퍼티에 해당 코드를 적어야합니다. 프로퍼티 래퍼를 쓰면 프로퍼티 정의 코드를 한번 쓰고 적용할 여러 프로퍼티에 재사용하여 적용할 수 있습니다. 프로퍼티 래퍼를 정의하기 위해 구조체 열거형 클래스에 wrappedValue 프로퍼티를 만듭니다. 아래 코드는 12보다 작거나 같은 값을 저장하는 것을 보장하는 구조체입니다.12보다 큰 값을 저장하면 12를 대..
objc Bridging Header Settings의 base에 해당하는 딕셔너리입니다. let baseSettings: [String: SettingValue] = [ "SWIFT_OBJC_BRIDGING_HEADER": "MyApp/Source/MyApp-Bridging-Header.h", ] Project Version (Xcode에서 version, build에 해당) Settings의 base에 해당하는 딕셔너리입니다. let baseSettings: [String: SettingValue] = [ "MARKETING_VERSION": "1.0", "CURRENT_PROJECT_VERSION": "1.0.0.6" ] plist로도 설정합니다. let cfBundleURLTypes: [InfoP..
Defendencies.swift 만들기 Tuist/ProjectDescriptionHelpers 폴더에 새로운 파일 추가 만약 프로젝트 디렉토리에 Tuist/ProjectDescriptionHelpers가 없으면 생성해줍니다. Defendencies.swift파일을 만들어줍니다. 그리고 다음과 같이 작성합니다. 민소네님의 글을 참고했습니다 http://minsone.github.io/mac/ios/ios-project-generate-with-tuist-3