
안녕하세요~개발자 멍구입니다 😊오늘은 iOS 개발을 하다 보면 한 번쯤 꼭 마주치는 "debounce 처리", 그중에서도 Timer를 활용한 간단한 구현 방법을 공유해보려 해요.너무 무거운 Combine은 부담스럽고, 간단한 기능 하나 때문에 복잡한 구조 짜긴 애매할 때!이럴 때 오늘 소개하는 방식이 깔끔하고 딱입니다.프론트엔드에서도 자주 쓰이는 debounce 개념, 함께 쉽게 이해해볼게요! Debounce란 뭘까? 쉽게 이해하기Debounce는 ‘이벤트가 연달아 들어올 때, 마지막 것만 실행’하는 기능이에요.대표적인 예시는 자동 검색창이 있겠네요.사용자가 키보드를 칠 때마다 검색을 하지 않고,타이핑이 멈춘 뒤 일정 시간이 지나면 한 번만 검색 요청을 보내는 것!즉, 이벤트가 너무 자주 발생하는 상황..

안녕하세요, 개발자 멍구입니다! 🍀오늘은 iOS 앱에서 자주 필요한 기능 중 하나인 "버튼 중복 클릭 방지", 바로 throttle 기능을 Swift 코드로 직접 구현해본 경험을 공유해보려 해요.보통 throttle은 Combine에서 제공되지만, Combine 없이도 구현 가능하다면?코드를 직접 다루며 개념을 이해하면, 좋을 것 같아서 공부 겸 Task 비동기 API를 이용해서 구현해봤어요.오늘은 Task와 @MainActor, 그리고 async/await 기반으로 Throttler 클래스를 직접 만들어보며, 어떤 원리로 동작하는지 친절하게 풀어드릴게요. throttle이란? 간단 개념 정리throttle은 지정된 시간 간격 안에서는 한 번만 이벤트를 허용하고, 그 외에는 무시하는 제어 방식이에요. ..

안녕하세요~ 개발자 멍구입니다. ✨저는 현업에서 개발을 하면서 비동기적으로 중복 호출을 방지하고, 예외처리 하는등의 다소 복잡한 로직을 구현해본적이 있는데요. 그렇게 자주 사용하지는 않다보니, 한번씩 리마인딩을 하지 않으면 얼마 안가서 까먹게 되더라고요... ㅠㅠ근데 사용할일이 생기면 굉장히 중요하고, 많은 테스트가 필요한 작업이다보니, 리마인딩의 필요성을 느꼈습니다.. 그래서 이 리마인딩 공부 겸... Swift Concurrency의 Task를 활용해서 Debouncer를 구현해봤습니다. 초기구현이라 부족한 점 많을 수 있으니, 감안해서 보고 많은 피드백 부탁드립니다! 근데 그전에... Debounce가 머임?debounce는 일정 시간 동안 특정 이벤트가 다수 발생했을때, 마지막 하나의 이벤트만 ..

안녕하세요. 개발자 멍구입니다! iOS 개발을 하다 보면 "동시성", "데이터 경쟁(data race)", "스레드 안전성" 같은 말들이 자주 들리죠? 처음 들으면 어렵게 느껴질 수 있지만, 오늘은 그런 개념들을 단번에 정리해주는 핵심 키워드 두 가지를 소개해드릴게요.바로 Actor와 Sendable입니다. 앱이 복잡해지고, 멀티태스킹이 많아질수록 중요해지는 이 개념들, 오늘 알아보겠습니다. Actor? 데이터 경합 문제를 깔끔하게 해결하는 방법먼저 Actor부터 볼게요."Actor는 일종의 안전한 방입니다." 여러 사람이 동시에 들어와서 방 안의 물건을 엉망으로 만들지 않도록, 한 명씩만 차례대로 들어와서 방 안의 상태를 변경할 수 있도록 해요.Swift에서 actor는 class처럼 참조 타입이지만,..
- Total
- Today
- Yesterday
- swift알고리즘
- Protocol
- Collection
- 컬렉션
- Swift 알고리즘
- 프로그래머스
- swift concurrency
- swift string
- swift언어
- 백준알고리즘
- 알고리즘
- uikit
- ios
- swift 기초
- 부스트코스
- 개발자문서
- 프로토콜
- 백준swift
- createML
- 스위프트
- 김프매매
- swift reduce
- 프로그래머스swift
- CoreML
- SwiftUI
- 알고리즘문제
- 자연어처리
- swift
- swift문제
- 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 |