[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:) 메소드로는 충분하지 않습니다. 이를 구현하기 위해 테이블 뷰의 다음..
[Swift] Hashable 안녕하세요. 오늘은 제너릭을 공부할 때도 딕셔너리를 공부할 때도 언급되는 Hashable 프로토콜에 대해 공부해보려 합니다. 사실은 제너릭에 관한 내용을 정리하려 했으나 그 이전에 앞서 Hashable을 먼저 정리해야 할 것 같아서 이렇게 글을 작성하게 되었습니다. 그럼 바로 시작해보도록 하겠습니다. Overview 스위프트에서 딕셔너리의 키와 세트로 사용되기 위해서는 해당 타입은 반드시 Hashable 프로토콜을 준수해야 합니다. 그렇기 때문에 String, Integer, Floating-point 그리고 Boolean 타입과 같은 Standard library에 속한 많은 타입들은 Hashable 프로토콜을 준수합니다. 심지어는 세트 타입도 기본적으로는 해시값을 제공합..
[iOS BoostCourse] JSONEncoding & JSONDecoding 학습에 대한 내용은 Edwith에서 제공하는 iOS 부스트코스를 공부하면서 참고한 것입니다. [관련 강의] JSONEncoder과 JSONDecoder에 대해서는 익히 많이 들어봤습니다. 서버로부터 데이터를 받아올 때 json을 필히 다루게 되는데 사실 지금까지 저는 다음과 같은 방식으로 데이터를 파싱해왔습니다. 다음은 졸업 작품으로 진행중인 비콘을 활용한 프로젝트 코드의 일부입니다. 서버로부터 매장들의 비콘 식별 값들을 받아올 때 Alamofire를 이용해서 json 데이터를 받아오는 상황입니다. 단순하다면 단순할 수 있는 코드이지만 만일 받아오는 값이 많아진다면 상당히 귀찮은 작업이 될 것입니다. 그럼에도 불구하고 저는..
- Total
- Today
- Yesterday
- TableView
- 운영체제
- UIResponder
- Xcode
- nodejs
- Algorithm
- 백준
- 스위프트
- IOS
- segue
- oauth2.0
- 알고리즘
- auto layout
- Codable
- 부스트코스
- 클로저
- 아이폰
- edwith
- Operating System
- 테이블뷰
- 프로토콜
- notificationcenter
- storyboard
- Protocol
- boostcourse
- iPhone
- 오토레이아웃
- UIControl
- CRUD
- Swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |