일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pod install
- GeometryReader
- url 추적
- scrolling tab
- oberve url
- ios
- url 관찰
- UIPresentationController
- DevelopmentRegion
- base64 변환
- swift
- notifychanged
- convert base64
- List
- UIViewControllerTransitioningDelegate
- detect url
- Side Menu
- 스크롤 탭
- ViewBuilder
- SwiftUI
- Android
- 개발자 면접
- DataBinding
- transformation.map
- Swift Package Manager
- Tuist
- development language
- 상단 탭바
- swift #swift keychain #keychain 사용법
- 기존 앱
- Today
- Total
목록분류 전체보기 (172)
버그 잡이
Observable은 subscribe 이후 complete 또는 error 이벤트가 발생하기 전까지 계속 next 이벤트를 발생시킵니다. "계속" 이라는 단어는 프로그래머 입장에서 주의를 기울여야 하는 단어입니다. 계속 동작한다는 것은 굳이 동작하지 않아도 될 때도 동작한다는 것을 의미하고 이는 메모리 누수로 이어집니다. 오늘은 Observable을 subscribe(구독) 한 이후에 적절한 시점에 구독을 해지하는 방법에 대해서 알아보겠습니다. 1. Dispose 아래와 같이 observable을 구독하는 코드가 있습니다. subscribe() 메서드는 기본적으로 disposable을 반환합니다. disposable은 메모리 관리를 도와주는 객체입니다. (크게 리소스 취소와 실행 취소에 사용됩니다.) ..
팝업에는 보통 "오늘 하루 보지 않기" 버튼이 함께 있습니다. 하루에 대한 계산 기준은 기획에 따라 달라질 수 있는데요. 1. 지금부터 24시간 이후 다시 띄우기2. 내일 0시부터 다시 띄우기 위와 같은 시간은 어떻게 계산할 수 있을까요? 1. 지금부터 24시간 이후 팝업 다시 띄우기 Calendar 구조체를 활용하면 간단하게 지금 날짜에 하루를 더할 수 있습니다.현재 시간에 하루를 더하면 됩니다.let today = Date()let nextDate = Calendar.current.date(byAdding: .day, value: 1, to: today)print(today) // 2020-09-28 12:44:35 +0000print(nextDate) //Optional(2020-09-..
RxSwift로 tableView를 보다 간단하게 구현할 수 있습니다. 구현 방식에도 여러 가지가 있는데 크게 tableView.rx.items 에 bind하는 방법 RxDataSource를 사용하는 방법 이렇게 두 가지 방법이 있습니다. tableView.rx.items 첫번째 방법은 가장 기본적인 방법으로 간단한 tableView 형태를 구현할 때 사용할 수 있습니다. data를 tableView에 bind하는 방식으로 기존에 Rx를 활용하여 data와 button을 바인딩 했던 것과 별반 다르지 않습니다. 차이점이 있다면 클로저 안에서 index, model, cell 변수가 주어져 이를 활용한 작업이 가능합니다. data의 특정 요소를 text로 넣는다거나 index에 따라 각기 다른 특정을 주는..
Swift에서 버튼 클릭시 동작을 설정하려면 addTarget을 통해서 함수를 연결하거나 오토레이아웃을 쓸 경우 @IBAction으로 연결할 수 있습니다. //addTarger을 활용한 방법 printLogBtn.addTarget(self, action: #seletor(printLog()), forControlEvents: .TouchUpInside) @objc func printLog() { print("clicked!") } //IBAction을 활용한 방법 @IBAction func printLog(btn: UIButton) { println("clicked!") } RxSwift를 통해서도 UIEvent를 받을 수 있습니다. let disposeBag = DisposeBag() button.rx..

RxSwift 를 활용하면 버튼의 활성화 상태를 보다 쉽게 제어할 수 있습니다. 이를 위해서는 먼저 RxSwift의 두 가지 Operator에 대해서 이해할 필요가 있습니다. Combine Latest 2개 이상의 Observable을 합쳐서 발행해줍니다. 근데 그 패턴이 좀 독특해서 그림으로 이해할 필요가 있습니다. combineLatest는 다음과 같은 특징이 있습니다. 1. 합쳐지는 observable 들이 각각 최초 발행해야 result가 생성된다. 2. 둘 다 onCompleted 되어야 onComplete된다. 3. error는 하나만 발생해도 error를 전달한다. (코드로 살펴보겠습니다.) let bag = DisposeBag() enum MyError: Error { case error ..
지금 나는 인턴이지만 사수가 없다. 그래서 회사의 주요 이슈를 혼자서 어떻게든 처리해야 하는 상황이다. 다행히 주변 분들의 도움을 받으며 하나씩 해결을 해나가는 중이다. 그런데 오늘은 약속했던 마감이 하루 지난 날이다. 나는 약속했던 작업을 다 하지 못 했고, test 과정에서 내가 예상치 못 했던 이슈들이 발생했다. 치고 들어오는 이슈들을 하나씩 처리하고자 했지만 나의 뇌는 쏟아지는 이슈들에 굴복하고 말았다. 이때부터 나의 손은 나의 뇌보다 먼저 움직였다. 즉, 생각을 하지 않고 코딩을 하기 시작한 것이다. 이렇게 엉성한 하드코딩이 시작되었고, 내가 만들고 수정하는 코드의 이펙트를 감잡을 수 없었다. 나는 조급했고, 머리는 뜨거웠다. 그래도 머리를 쥐어 뜯으며 어떻게든 결과물을 만들어냈다. 그제야 이성..
animation의 변천사 (iOS 2) beginAnimations, commitAnimations (iOS 4) closure 형태인 animate 메서드 (iOS 10) UIViewPropertyAmimation 1번은 현재 deprecated 되었습니다. 2번이 많이 쓰이고 있는데, 애플에서는 3번 방법의 사용을 권장하고 있습니다. 그럼 2번, 3번 방법에 대해서 알아보겠습니다, Animate animate(withDuration: animations:) → duration(시간), animation(변화될 특성) 을 파라미터로 받습니다. animate(withDuration: animations: completion:) → 위 파라미터에 더해. 애니메이션 완료시 동작하는 completion을 추..
NumberFormatter란? 숫자값과 문자적 표현 사이를 변환해주는 formatter 입니다. NumberFormatter를 통해서 어떤 작업을 할 수 있을까요? 세자리수 마다 콤마 넣기 NumberFormatter객체의 numberStyle을 .decimal로 설정함으로써 콤마를 찍을 수 있습니다. let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .decimal let price = 12345678 let result = numberFormatter.string(for: price)! print(result) //12,345,678 그런데 이 방법은 문제가 있습니다. 소수점을 가지고 있을 때, 소수점이 최대 3자리까지 밖에..