[CS] 디자인 패턴
·
CS
싱글톤 패턴하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 장점하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어듦단점의존성이 높아짐. TDD(Test Dirven Development)를 할 때 걸림돌이 됨. 의존성 주입 - DI(Dependency Injection)모듈 간의 결합을 조금 더 느슨하게 만들 수 있음.이를 통해 메인모듈(상위모듈)은 하위모듈에 대한 의존성이 떨어지게 됨. -> 디커플링 된다 DI의 장점모듈들을 쉽게 교체할 수 있는 구조가 되어, 테스팅하기 쉽고 마이그레이션하기 수월함.구현할 때 추상화 레이어를 넣고 이를 기반으로 구현체를 넣어 주기 때문에 애플리케이션 의존성 방향이 일관되고, 애플리케이션을 쉽게..
Logging Error: Failed to initialize logging system. Log messages may be missing. If this issue persists, try setting IDEPreferLogStreaming=YES in the active scheme actions environment variables.
·
iOS
가끔 프로젝트를 실행하면 로그창에 이런 오류가 발생한다. 로그 시스템을 초기화하지 못했다고 한다.해결해보자. 먼저, Xcode를 실행한 상태로 Product -> Scheme -> Edit Scheme...으로 이동한다. Run -> Arguments 탭으로 가서 Arguments Passed On Launch에 아래 항목을 추가한다.IDEPreferLogStreaming=YES 이렇게 하면 문제가 해결된다.
[swift] 위치 권한 설정
·
swift
swift로 앱을 만들다보면 사용자의 위치를 획득해야하는 경우가 생긴다. CoreLocation 라이브러리로 열심히 코드를 작성하고 실행을 돌리는 순간..!!...(아무일도 일어나지 않았다)당연하다. 우린 사용자에게 권한을 요청한 적이 없기 때문이다.그럼 위치 권한은 어떻게 요청하냐?? info.plist현재 위치 사용에 대한 동의에 관련한 내용을 작성한다.Privacy - Location Always Usage Description (위치를 항상 허용)Privacy - Location When In Use Usage Description (위치를 사용할 때만 허용)Privacy - Location Always and When In Use Usage Description (위치를 사용할 때와 항상 허용)..
[swift] RxSwift란?
·
swift
RxSwift를 알기 전에 먼저 Reactive Programming을 알아야 한다. Reactive Programming이란?Reactive Programming이란 비동기적 데이터 흐름과 전달에 관한 프로그래밍 패러다임이다.이러한 Reactive Programming의 핵심은 모든 것을 비동기적 데이터의 Stream으로 간주하고, 다양한 방법을 통해 이러한 비동기 이벤트를 처리하는 것이다. RxSwift란?RxSwift란 Reactive Extension + Swift의 약자로 비동기 프로그래밍을 관찰 가능한 순차적 형태와 함수 형태의 연산자를 통해 처리하게끔 도와준다. RxSwift를 사용하는 이유Reactive Programming된 API를 제공하기 때문에 명확하고 명시적으로 비동기 데이터를 ..
[swift] ARC
·
swift
ARC란?Automatic Reference Counting의 약자로, 앱의 메모리 사용을 추적하고 관리해주는 기능이다. 클래스가 새로운 인스턴스를 할당하게 되면 ARC는 인스턴스 정보를 저장할 메모리를 할당하고 참조 카운트를 증가시킨다. 그 후 인스턴스의 참조가 해제되면 참조카운트를 감소시키고 더이상 필요하지 않은 상태가 되면 참조카운트가 0이 되어 자동으로 메모리에서 해제가 된다. ARC에서 발생할 수 있는 문제순환 참조 순환 참조를 해결하기 위한 방법Reference Count 계산에 포함되지 않는 unowned 나 weak를 사용한다.메모리에 없는 객체를 참조하게 되면 unowned는 crash가 나고, weak는 nil을 반환한다.하지만, 약한 참조를 사용하여 객체의 수명이 종료되는 동안 수명..