본문 바로가기

분류 전체보기96

Ch5. Filtering Operators 본 게시물은 Florent Pillet, Junior Bontognali, Marin Todorov, Scott Gardner - RxSwift. Reactive Programming with Swift (2017, Razeware LLC) 책과 ReactiveX 사이트를 기반으로 작성되었습니다. RxSwift를 공부하는 데에 이 책을 읽으면 좋겠다고 생각하였고, 단지 읽기만 하는 것보다 한국어로 직접 정리해놓으면 더 기억하기 좋을 것 같아 게시물을 작성하게 되었습니다. 이번 게시물에서는 마블 다이어그램과, 마블 다이어그램에 해당하는 메서드 예시를 중점으로 정리하였습니다. 챕터 이름에서 알 수 있듯이, 이번 게시물에서는 원하는 값을 얻기위해 필터링을 하는 Filtering Operator들을 알아보겠습니.. 2023. 2. 24.
RxSwift. Traits가 뭘까? (Single, Maybe, Completable) RxSwift를 공부하던 중에 책에는 없는 내용인 Trait(Signle, Maybe, Completable)라는 게 있다는 것을 알게되었습니다. RxCocoa에도 Traits가 있지만 오늘은 일단 RxSwift의 Traits에 대해서 다뤄보려 합니다. What is Traits? Traits란 UI처리에 특화된 Observable이라고 할 수 있습니다. Traits는 직관적이고 작성하기 쉬운 코드를 작성하는데 도움이 되는 Observable로, 인터페이스 간 Observable이 소통하는 것을 도와주고 raw observable에 비해 문맥상 의미를 전달하거나 특정 용도로 사용하기에 좋습니다. 따라서 필수가 아닌 선택적으로 사용됩니다. Single 1개의 element를 포함하는 Observable S.. 2023. 2. 24.
Ch3. Subjects 본 게시물은 Florent Pillet, Junior Bontognali, Marin Todorov, Scott Gardner - RxSwift. Reactive Programming with Swift (2017, Razeware LLC) 책과 ReactiveX 사이트를 기반으로 작성되었습니다. RxSwift를 공부하는 데에 이 책을 읽으면 좋겠다고 생각하였고, 단지 읽기만 하는 것보다 한국어로 직접 정리해놓으면 더 기억하기 좋을 것 같아 게시물을 작성하게 되었습니다. 이번 게시물에서는 마블 다이어그램과, 마블 다이어그램에 해당하는 코드 예시 및 결과를 중점으로 정리하였습니다. 앞서 작성했던 게시물 Chapter 2에서는 Observable이 무엇인지, 어떻게 생성하는지, 어떻게 subscribe하는지.. 2023. 2. 24.
Ch2. Observable 본 게시물은 Florent Pillet, Junior Bontognali, Marin Todorov, Scott Gardner - RxSwift. Reactive Programming with Swift (2017, Razeware LLC) 책을 기반으로 작성되었습니다. RxSwift를 공부하는 데에 이 책을 읽으면 좋겠다고 생각하였고, 단지 읽기만 하는 것보다 한국어로 직접 정리해놓으면 더 기억하기 좋을 것 같아 게시물을 작성하게 되었습니다. 영어 원서로 된 책을 제가 읽히는대로 의역 및 정리하였기 때문에 잘못된 해석이 있을 수 있습니다. 잘못된 해석은 댓글로 알려주시면 바로 수정하겠습니다 :) What is an observable? Observable은 Rx의 심장이라고 할 수 있습니다. 우리는 앞.. 2023. 2. 24.
[SwiftUI] 양방향 바인딩 (작성중) 이번 게시물에서는 SwiftUI의 양방향 바인딩에 대해 알아보겠습니다. SwiftUI에서 양방향 바인딩이 중요한 이유는 ContentView가 struct로 이루어져 있기 때문입니다. 그럼 예시를 보면서 천천히 살펴볼까요? 텍스트 입력받기 텍스트를 입력받고, 입력받은 텍스트를 보여주는 예시를 구현해볼게요! 위와 같은 코드를 작성하고 나면 아래와 같은 화면을 볼 수 있습니다. 그리고 저 TextField에 텍스트를 입력하면??? TextField 아래에 있는 Text에도 입력한 글자가 나타나게 되죠! 코드를 보면 TextField에서 입력되는 텍스트를 $email을 통해 email 변수에 넣어주게 되고, Text에서는 그 email 변수를 보여주도록 되어 있죠. 그리고 email 변수에는 @State 가 .. 2023. 2. 24.
[SwiftUI] 시작하기 네 저도 이제 SwiftUI를 공부해보려 합니다.. iOS 공부를 시작한지 7개월차가 되었고, 그동안 SwiftUI보다는 기초적인 부분에 신경쓰려고 했었어요. Storyboard를 활용해본다던가, xib를 활용해본다던가, ConstraintsLayout을 사용해서 코드로 뷰를 구성해본다던가, SnapKit을 사용해본다던가... 그리고 이제 SwiftUI를 슬슬 시작해보기로 마음 먹었습니다 :) SwiftUI SwiftUI는 재작년 2019 WWDC에서 발표된 것으로, iOS 13.0 이상부터 사용 가능합니다. 그리고 이 SwiftUI를 사용해서 워치나 위젯을 구현할 수 있게 되었죠! SwiftUI는 선언적 구문을 사용하기 때문에 사용자 인터페이스의 기능을 명시하기만 하면 되어, 간단한 코드로 Swift의.. 2023. 2. 24.
Ch4. 주석 4장은 주석에 대해서 다룬다. 잘 달린 주석은 그 어떤 정보보다 유용하다. 하지만 다른 의미로, 함수의 이름이나 변수의 이름만으로 의도를 정확하게 전달하지 못하고 주석으로 부가적인 설명이 필요하다는 말이 될 수도 있다. 이번 장에서는 좋은 주석과 나쁜 주석에 대해서 알아보자. 목차 더보기 목차 1. 주석은 나쁜 코드를 보완하지 못한다 2. 코드로 의도를 표현하라 3. 좋은 주석 (1) 법적인 주석 (2) 정보를 제공하는 주석 (3) 의도를 설명하는 주석 (4) 의미를 명료하게 밝히는 주석 (5) 결과를 경고하는 주석 (6) TODO 주석 (7) 중요성을 강조하는 주석 4. 나쁜 주석 (1) 주절거리는 주석 (2) 같은 이야기를 중복하는 주석 (3) 오해할 여지가 있는 주석 (4) 의무적으로 다는 주석 (.. 2023. 2. 24.
Ch3. 함수 함수는 프로그램의 가장 기본적인 단위이다. 이번 3장에서는 함수를 잘 만드는 법을 소개한다. 누군가 내가 짠 함수 코드를 보았을 때, 너무 길어서, 너무 복잡해서, 함수 이름을 이해하지 못해서, 중복되는 코드가 너무 많아서 등의 이유로 긴 시간동안 이해하지 못한다면 이 글을 읽고 함수를 짜는 방식을 고쳐보는 건 어떨까? 목차 더보기 목차 1. 작게 만들어라 2. 한 가지만 해라 3. 함수 당 추상화 수준은 하나로 4. Switch 문 5. 서술적인 이름을 사용하라 6. 함수 인수 7. 부수 효과를 일으키지 마라 8. 명령과 조회를 분리하라 9. 오류 코드보다 예외를 사용하라 10. 반복하지 마라 11. 구조적 프로그래밍 12. 함수를 어떻게 짜죠? 1. 작게 만들어라 ✅함수는 가능한 한 작게 만들어야 합.. 2023. 2. 24.
Ch2. 의미 있는 이름 1장은 클린코드가 왜 필요한지, 대부분의 코드가 왜 복잡해지고 더러워지는지, 클린코드란 무엇인지를 다뤘다. 2장부터는 코드를 클린하게 만들 수 있도록 본격적으로 시작하는 장이며, 이 챕터에서는 주로 이름(변수명, 함수명 등)을 잘 짓는 법에 대해 다룬다. 왜 이름을 잘 지어야 할까? 코드는 나 혼자만의 것이 아니다. 여러 사람들과 일을 할 때, 누군가 내 코드를 보았을 때, 한 눈에 이해할 수 있도록 코드를 깨끗하게 잘 다듬어야 한다. 그 중에 첫 단계가 바로 이름을 잘 짓는 것이다. 목차 더보기 목차 1. 의도를 분명히 밝혀라 2. 그릇된 정보를 피하라 3. 의미 있게 구분하라 4. 발음하기 쉬운 이름을 사용하라 5. 검색하기 쉬운 이름을 사용하라 6. 인코딩을 피하라 7. 자신의 기억력을 자랑하지 마.. 2023. 2. 24.
[Apple] userInteractionEnabled 본 게시글은 Apple Developer - userInteractionEnabled 를 해석한 글입니다. userInteractionEnabled "A Boolean value that determines whether user events are ignored and removed from the event queue." userInteractionEnabled는 User Event를 무시할지, 그리고 Event Queue에서 제거할지를 결정하는 Boolean 값입니다. userInteractionEnabled를 NO라고 설정했을 때는 touch, press, keyboard, focus event 가 무시되고, Event Queue에서 제거됩니다. YES라고 설정했을 때는 해당 이벤트들이 정상적으로.. 2023. 2. 24.
UIView의 각 코너마다 서로 다른 radius 적용하기 이전에 view.layer.maskedCorners 를 사용하여 특정 코너에만 radius를 적용해 본 경험은 있었습니다. 하지만 이번에는 각각의 코너에 서로 다른 radius 값을 적용해야 할 일이 생겨서 방법을 찾아보았고, 그 방법을 기록 및 공유해보려 합니다. 그럼 예시로 아래와 같은 뷰를 구현해보겠습니다. 보통 특정 코너에 radius를 적용하기 위해 사용하는 maskedCorners 는 left-top, left-bottom 의 14 px 짜리 코너만 적용하거나, right-top, right-bottom 의 4 px 짜리 코너만 적용하는 등, 특정 코너에 하나의 radius 값만 적용할 수 있었습니다. 하지만 제가 구현해야 하는 뷰는 위에 보이는 뷰처럼 특정 코너에는 14 px 의 radius.. 2022. 4. 19.
[Objective-C] 기본문법 (함수, 변수) 최근 Objective-C를 공부할 일이 생겼습니다. 그래서 기본문법부터 천천히 살펴보려 하는데, 이번에도 블로그에 기록해가며 공부하는게 기억에도 오래 남을 것 같아 게시글을 작성하게 되었습니다. 오늘은 Objective-C에서 아주아주 기본적인 문법들만 간단하게 살펴볼 예정입니다. 함수 선언 Objective-C에서는 .h (헤더파일) 과 .m 파일이 있습니다. 보통 .h 파일에 구현할 메서드와 변수를 선언하고, .m 파일에서 그 내용들을 구현하게 되죠. 그렇기 때문에 함수를 구현하기 위해서는 .h 파일에 어떤 메서드를 구현할건지 선언해주어야 합니다. 함수 구현 - 로 선언된 함수는 인스턴스 메서드, + 로 선언된 함수는 클래스 메서드입니다. 그래서 호출할 때에는 아래처럼 인스턴스 메서드는 self를 .. 2022. 1. 13.