![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cfZbCx/btsyl1TXp3g/SqC3bcmKNBpDJeBuHfAPXK/img.png)
함수형 프로그래밍에 대해 알아보기 전에 우선 Swift라는 언의의 패러다임을 알아볼 필요가 있다. 그 중 가장 강조되는 패러다임은 다음과 같다. 함수형 프로그래밍 프로토콜 지향 프로그래밍 먼저 프로토콜은 클래스, 열거형, 구조체에 프로토콜을 채택함으로 특정 기능을 구현할 수 있는 기능이다. 이를 이용해서 기능별로 모듈화를 할 수 있다. Swift의 기본 타입(뼈대)들은 모두 구조체로 만들어져 있다. 상속이 되지 않는 구조체에 그 많은 기능들을 넣기 힘들어 보이지만, 프로토콜, 익스텐션, 제넬릭을 이용해 구현되었다. 프로토콜에 대한 내용은 다음에 따로 포스팅을 할 예정이다. 1. 개요, 함수형 프로그래밍이란? 함수형 프로그래밍의 중요한 개념은 함수를 일급 객체로 다루는 점이다. 일급 객체의 특징 - 변수에..
1. 개요 원격 푸시, 알림, Push Notification 등으로 불리는 푸시알림은 Product가 앱으로 개발되어야 하는 중요한 이유 중 하나이다. Apple 디바이스에 전송되는 푸시알림은 APNs(Apple Push Notification Service)를 통해 전송된다. 보통의 경우 Firebase나 kakao등의 푸시 서버를 사용하는 편인데 클라이언트에서는 서버의 요청에 따라 유저를 특정할 수 있는 값과 APNs 토큰을 전달하고, 서버에서는 해당 토큰과 값으로 등록 등의 처리를 한다. (사용하고자 하는 방식에 따라 다름) 푸시알림은 사용자에게 단순히 알림을 주는 것 뿐 아니라, 알림을 클릭했을 때 특정 화면으로 이동하게 한다. 이번 포스팅에서는 푸시 데이터를 수신하고, 데이터에 따라 특정 뷰로..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/FtNkN/btsys5HNTYp/RmRWm67O1HYAFtmZd6taMK/img.png)
이번 포스팅에서 구현할 뷰는 카카오맵 에서 확인할 수 있는 뷰인데, 하단에 붙어있는 조그마한 팝업뷰다. 기획, 디자인에서 이런 형태가 요구된다면, 시간이 들어도 재사용이 가능한 형태로 만들어두는 것이 결국 미래의 시간을 아끼게 될 수 있을 것이라 생각한다. 그래서 이러한 뷰를 다른 곳에서도 사용할 수 있도록 뷰 컨트롤러 활용해 만들어 보았다. (이름도 NiceSimplePickerView 로 비장하게 만들어줬다..🙂) 1. 뷰의 구조 뷰의 구조를 설계하는데 다음 내용을 고려했다. 들어오는 데이터의 갯수에 따라 선택 가능한 뷰가 늘어나야 함 -> 컬렉션뷰 사용 ContainerView는 CollectionView의 dataSource에 따라 크기가 늘어나야 함 헤더 타이틀 뷰와 dismiss button은..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cjd4fi/btsytt2oJQw/d8TVuZKl4G64Y7gNidHLN1/img.png)
iOS 앱을 개발하다 보면, 테이블뷰와 컬렉션뷰(이하 테이블뷰)는 거의 필수적으로 만들어야 한다. 그러다보면 기획에 따라 동일한 셀을 여러 테이블뷰에 사용하는 것이 필요할 떄도 있고, 동일한 테이블뷰를 여러 곳에 사용하는 경우도 있다. 이런 경우에 Wireframe을 멍하게 바라보며 고민을 한다. 뷰 컨트롤러 내에서 분기처리 할까? 부모 뷰 컨트롤러로 만들까? 어느 뷰 범위까지 모듈로 만들까? ... 여러가지 전후 상황과 화면 구성에 따라 가장 적절한 방법을 찾기 위해 노력한다. 가장 최근 업무에서는 커스텀 테이블뷰 혹은 컬렉션뷰를 만들어서 사용하는 방법을 사용했다. 동일한 테이블뷰를 여러가지 뷰 컨트롤러에서 사용하는 UI였는데, 모든 뷰 컨트롤러에서 dataSource와 delegate를 구현하는 것..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bzT422/btsyuHFC0vG/GTj3nGbanMPK57bMVKAjt0/img.png)
여러 카테고리의 앱들을 만들어보면 각 앱들의 카테고리마다 공통으로, 자주 쓰는 기능들이 존재한다. 대표적으로 SNS 앱에서는 친구 관계에 대한 기능을 예로 들 수 있다. 팔로우, 친구 등 이름으로 쓰이는 친구 관계는 생각보다 나름(?) 복잡한 관계를 가지고 있다. 친구 신청중, 친구 요청 받음, 친구, 차단됨, 내가 차단 시킴 ... 등 여러가지 복잡한 상태를 가지고 있으며, 이것 또한 앱마다 다를 것이다. 따라서 어떠한 방식이든 클라이언트와 서버간 relationship에 대한 약속이 필요하며, 이는 하나의 앱에서 동일한 작동을 보장해야 한다. 이번에 개발에 참여한 SNS 앱에서도 당연하게도 친구 관계에 대한 UI가 많이 있었다. 이런 여러가지 뷰에서 사용되는 동일한 기능들을 각각의 뷰에서 하나하나 구..
- Total
- Today
- Yesterday
- watchOS
- avplayer
- keyboardtype
- SwiftUI
- 토큰
- 2024년
- 애플워치 데이터 전송
- 소수점
- swift날짜
- auth
- IOS
- locale
- Xcode
- OAS
- 애플워치
- Xcode15
- demical
- 회고
- Swift
- flo
- TextField
- openapi-generator
- easy cue
- KVO
- musicplayer
- watch connectivity
- DateFormatter
- retry
- open-api-generator
- AVFoundation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |