본문 바로가기

전체 글

(67)
iOS) RxSwift 가볍게 훑어보기 (2) PublishSubject PublishSubject Observer이면서 Observable Subject로 전달되는 이벤트를 Observer로 전달하는 가장 기본적인 Subject이다. 즉 이벤트를 전달하는 역할과 이벤트를 전달받는 역할 모두를 할 수 있다. 코드로 알아보자 let dispose Bag = DisposeBag() enum MyError: Error { case error } 기본적인 세팅은 다음과 같이 할 수 있다. let subject = PublishSubject() 위 코드에서 subject는 문자열이 포함된 next event를 받아서 다른 observer에게 전달할 수 있다. 생성자를 호출할 때에는 파라미터를 전달하지 않는다. subject는 비어있는 상태로 생성되는 것으로, 생성 시점에는 내부에 아무..
iOS) RxSwift 가볍게 훑어보기 (1) Observable Hello RxSwift RxSwift란? ReactiveX 라이브러리를 Swift 언어로 구현한 것이다. 그렇다면 ReactiveX는 무엇일까? 공식 홈페이지에 들어가보면 다음과 같이 적혀있다. An API for asynchronous programming with observable streams 여기서 주목해야 할 키워드는 asynchronous와 observable이다. 비동기적으로 발생한 이벤트를 관찰 가능하게 만들어 반응형 프로그래밍을 할 수 있도록 한다. 정확한 정의는 아니지만 지금 당장은 이정도로 생각해 볼 수 있다. 더 자세한 내용은 추후에 포스팅 할 계획이다. 왜 RxSwift? 그렇다면 장점은 무엇일까? RxSwift의 장점은 단순하고 직관적인 코드를 작성할 수 있다는 것이다. ta..
CS) 프로세스와 스레드 프로세스와 스레드 프로세스란? 실행중인 프로그램 프로세스는 실행중인 프로그램으로 메인 메모리에 존재한다. 실행중이지 않은 프로그램의 경우 저장장치에 있으며 프로세스는 언제든 CPU가 실행시킬 수 있는 상태에 있는 것이다. 시스템 콜을 통해 자원을 요구하는 주체이기도 하다. 시분할 시스템의 경우 여러 개의 프로세스를 동시에 수행하는데 이를 멀티 프로세싱 혹은 멀티 태스킹이라 한다. 멀티 프로세싱은 멀티 프로세서와 혼동될 수 있어 보통 멀티 태스킹을 더 많이 쓴다. 하나의 프로그램이 수행 중 여러 개의 프로세스를 만드는 경우도 있다. 프로세스는 사용자 프로세스와 시스템 프로세스로 나뉠 수 있는데, 자원 경쟁 측면에서는 동일하다. 사용자 프로세스: 응용 프로그램이 실행되는 것 시스템 프로세스: 운영체제가 필요..
iOS) 오토 레이아웃과 오토 리사이징 Auto Layout 제약조건 속성 제약조건은 다음과 같이 적용된다. Item1의 항목 = Item2의 항목 * Multiplier + Constant 제약조건의 속성으로는 다음의 세 가지가 있다. Relation: 동일, 이상, 이하 Multiplier, Constant: 제약조건의 값 Priority: 우선순위 제약조건 경쟁 Relation 제약조건 간 경쟁에 영향을 미치는 요소로 관계(relation)가 있다. 예를 들어 레이블 A에 대해 중앙에 위치해야 하고, 왼쪽으로 100 포인트 이상 떨어져야한다는 제약조건이 있다고 가정해보자. 레이블 A는 크기 유지라는 제약조건이 있을 때 경쟁이 발생할 수 있다. Priority 우선순위가 높은 것이 먼저 적용된다. 우선순위는 최대 1000까지의 자연수로 표..
iOS) Dark Mode 지원하기 Color Asset 생성 1. Color Asset들을 담을 폴더 생성 Assets.xcassets -> 오른쪽 버튼 클릭 -> Folder 굳이 폴더를 안만들어도 되지만 깔끔하게 정리하기 위해 만들자. 2. 생성한 폴더에 Color Set 생성 생성한 폴더 명을 원하는 이름으로 바꾸고 해당 폴더에서 오른쪽 버튼을 눌러 Color Set을 추가한다. 3. Any와 Dark에 대해 컬러 지정 Color Set을 생성하면 기본적으로 Appearances가 Any, Dark로 지정된다. 여기서 Any는 다크모드가 지원되지 않는 오래된 버전에서의 색상값을 지정할 때 사용한다. 현재 프로젝트에서는 라이트모드가 Any와 동일하므로 Any, Light, Dark 대신 Any, Dark으로 하였다. 각 모드에 대해 ..