[Swift] Functor and Monad in Swift Swift의 Monad를 소개하기 위해 작성된 포스팅으로 Monad를 단독으로 다루는 것보다 Functor와 함께 이야기하는 것이 이해에 도움이 된다고 생각하여 Functor와 Monad를 이해하기 위한 몇몇 개념과 함께 이들을 알아보도록 하겠습니다. Context 컨텍스트(Context)와 컨텐트(Content)의 관계는 다음과 같습니다.컨텍스트는 컨텐트를 담고있는 형태로 옵셔널(Optional)을 예로 들면 Optional(2)에서 Optional은 컨텍스트가 2 는 컨텐트가 됩니다. 만일 옵셔널안에 값이 존재하지 않는다면 컨텍스트만 존재하는 꼴이 되겠죠. 이렇게 컨텍스트는 무언가를 담고있는 것을 의미합니다. 이렇게 무엇을 담고있다는 의미..
Handling UIKit Gestures Gesture recognizer를 사용하는 것은 뷰에서 발생하는 Touch나 Press 이벤트를 다룰수 있는 가장 간단한 방법입니다. 어떤 뷰든간에 한 개 혹은 복수 개의 Gesture에 대한 recognizer를 붙일 수 있습니다. Gesture recognizer는 뷰 위에서 발생하는 일련의 패턴이 존재하는 이벤트들 ( Double-Tap, Swipe, Pinch 등등 )을 처리하기 위해 Target-Action 패턴을 사용하고 이벤트가 발생하면 Target 객체에 이러한 사실을 전달하여 해당 이벤트를 처리할 수 있는 액션 메소드를 호출합니다. Gesture Recognizer에는 두 종류가 있습니다. 불연속 gesture recognizer 이벤트를 인식..
[ios] Responder Chain and Touch Event Overview 앱은 응답자 객체를 이용해 이벤트를 받고 처리합니다. 응답자 객체는 UIResponder 클래스의 객체로 서브클래스로는 UIView, UIViewController, UIApplication 등이 있습니다. 응답자 객체는 이벤트 데이터를 받고 반드시 이를 직접 처리하거나 다른 응답자 객체에게 전달해야 합니다. 이벤트가 발생하게 되면 앱은 해당 이벤트를 처리할 수 있는 가장 적절한 응답자 객체에게 이벤트 데이터를 전달하고 이를 first responder라 합니다. first responder가 이벤트를 반드시 처리하라는 법은 없죠! 이렇게 처리되지 않은 이벤트들은 first responder로부터 시작하는 Repsonde..
[ios] Hit Testing in iOS 안녕하세요. 오늘은 iOS에서 Event Handling에 대해 공부하면서 알게 된 내용을 정리해보려 합니다. 이전 포스팅에서는 UIControl에 대해 알아보았습니다. 오늘은 Hit Testing에 대해 기록해보도록 하겠습니다. Hit Testing 기본적으로 아이폰 화면상에서 터치가 일어나면 iOS에서는 해당 터치 이벤트를 적절히 처리해주어야 합니다. 이렇게 사용자로부터 특정 액션이 들어왔을 때 이를 처리해주는 녀석과 어떻게 처리해주는 방법을 지정해주는 것이 UIControl의 역할이었습니다. Hit Testing은 간단히 설명하자면 터치 이벤트가 발생한 뷰를 찾는 행위입니다. 조금 더 설명을 덧붙이자면 터치 이벤트가 발생한 최상단 뷰를 찾는 행위입니다. ..
[ios] 제네릭을 이용해 코드 중복 제거하기 안녕하세요. 오늘은 제네릭을 이용해 코드의 중복을 제거해보았는데요. 제네릭이라는 문법은 자바를 공부할 때부터 익히 들어왔고 그 용도가 무엇인지 알고있었습니다. 하지만 예제가 아닌 실제 프로젝트에 적용시켜본 것은 이번이 처음이라 추후에 보다 적극적으로 활용할 수 있기위해 이렇게 글을 작성하게 되었습니다. 이번 포스팅은 제네릭에 대한 기본적인 지식이 요구됩니다. 제네릭에 대한 기본 문법과 내용은 추후에 따로 작성해보도록 하겠습니다. 프로젝트에서는 생각보다 많은 코드 중복을 겪게 됩니다. 메소드 단위로 묶어 코드의 중복을 피하기도 하지만 메소드로 묶는 것에도 한계가 존재합니다. 저는 그런 경우를 네트워크 통신을 할 때 많이 겪었습니다. 저의 프로젝트를 예로 들어 ..
[ios] Key-Value Observing in Swift4 오늘은 Key-Value Observing, KVO에 대해 간단히 알아보도록 하겠습니다. Swift4로 넘어오면서 KVO의 방식에도 변화가 있었습니다. Swift4 이전에는 Observer와 Action 메소드를 따로 각각 별개로 정의해주었어야 했는데 Swift4의 observe(_:options:changeHandler) 메소드의 등장으로 Observer와 Action을 동시에 정의해줄 수 있게 되었습니다. 또한 기존의 KeyPath를 문자열로 입력하던 것과 다르게 프로퍼티로 접근이 가능해졌습니다. 사실 이외에도 context를 사용하지 않는 점 등 여러 변화가 있으나 제가 느끼기에 가장 큰 변화는 바로 가독성입니다. 이전의 KVO 방식은..
[ios] UIControl 안녕하세요. 현재 저는 Understanding Event Handling, Responders, and the Responder Chain 문서를 읽어보며 이벤트 핸들링에 대해 보다 자세히 알기 위해 공부를 하고 있습니다. 이를 위해 문서를 읽으면서 공부하고 알게 된 몇 가지 내용들을 정리해고자 합니다. 오늘은 바로 UIControl입니다. 그럼 바로 시작해보도록 하겠습니다. UIControl UIControl은 간단히 설명하자면 특정 액션이나 사용자의 의도(드래그, 버튼 클릭 등등)를 전달하는 시각적인 요소들의 기반이 되는 클래스입니다. UIControl 클래스를 상속하는 클래스로는 대표적으로 UIButton 클래스가 있습니다. UIButton의 문서를 UIControl을..
[ios] Self-Sizing Table View Cells 안녕하세요. 오늘은 테이블 뷰의 셀의 크기를 동적으로 관리하는 방법에 대해 알아보는 시간을 갖도록 하겠습니다. 기본적으로 UITableViewCell 의 높이는 UITableViewDelegate 프로토콜 메소드에 의해 정해집니다. tableView(_:heightForRowAt:) 하지만 셀의 높이는 항상 같을 수는 없습니다. 예를 들어 메신저 앱의 채팅 방의 대화 내역을 테이블 뷰로 구현한다면 각 셀의 높이는 사용자가 입력한 글자 수에 따라 달라질 것입니다. 그렇기 때문에 위와 같이 셀의 높이를 동적으로 관리하기 위해서는 tableView(_:heightForRowAt:) 메소드로는 충분하지 않습니다. 이를 구현하기 위해 테이블 뷰의 다음..
- Total
- Today
- Yesterday
- oauth2.0
- UIResponder
- 부스트코스
- nodejs
- Codable
- iPhone
- Xcode
- auto layout
- Algorithm
- TableView
- segue
- 오토레이아웃
- Protocol
- 테이블뷰
- notificationcenter
- 알고리즘
- 프로토콜
- 클로저
- boostcourse
- 백준
- 운영체제
- Swift
- UIControl
- 스위프트
- Operating System
- storyboard
- edwith
- IOS
- 아이폰
- CRUD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |