지난 블로그에서 Task의 개념, Task 취소, Task가 다른 비동기 작업이랑은어떻게 다른 건지에 대해서 살펴봤다. [swift] Swift Concurrency - Task (1)Swift Concurrency는 Swift 자체에서 비동기와 동기 처리를 더 안전하게 하고 간결하게 만들기 위한 기능이며 swift 5.5부터 도입되었다고 한다. async/await, Actor, @sendable등 여러 가지가 있지만 그중에서 오yanni13.tistory.com 오늘은 Task - 2탄으로 Task의 종류에 대해서 알아보도록 하자! ✏️ Task의 종류 Async-let동시 실행을 예약해두고 필요한 시점에서 기다리는 방식 기존방식의 binding 기존 방식에서 let result가 실행되기 전..
Swift Concurrency는 Swift 자체에서 비동기와 동기 처리를 더 안전하게 하고 간결하게 만들기 위한 기능이며 swift 5.5부터 도입되었다고 한다. async/await, Actor, @sendable등 여러 가지가 있지만 그중에서 오늘 공부해 볼 주제는 바로 Task이다! Task Task는 Concurrency에서 비동기 작업의 최소 단위라고 한다. 모든 비동기 코드는 어떤 작업의 일부로 실행되곤 하는데, Task는 한 번에 하나의 작업만 수행하지만, 여러 작업을 실행할 때 동시에 수행하기 위해 Task를 스케줄링할 수 있다고 한다. 하나하나 뜯어보자. 1. Task는 한 번에 하나의 작업만 수행한다. [순차] 보통 비동기는 한번에 하나의 작업만 수행하곤 한다. 그래서 하나의 Ta..
버그는 반드시 수정해야 한다. 그중에서도 재현하기 어려운 버그는 쉽게 손을 댈 수도 없다. 이때 로그를 사용하면 재현하지 않고도 버그의 흐름을 파악할 수 있도록 한다. 그래서 Swift의 통합 로깅 API인 Logger에 대해서 알아보도록 하자. 📚 Logger란? Swift에서의 Logger는 구조화된 로깅 api의 일부이며 Swift의 concurrency 및 디버깅과 잘 통합되도록 설계된 로깅 시스템이다. Logger는 os 프레임워크 기반으로 만들어졌으며 os 프레임워크 기능을 더 swift하게 사용할 수 있도록 추상화된 형태로 iOS 14.0부터 도입되었다.공식문서를 살펴보면 apple에서는 디버깅을 할 때 print보다 Logger를 권장하고있다. 기본적으로 성능적인 측면에서 Logger가..
iOS로 개발을 어느 정도 해보았다면 DispatchQueue에 대해서 잘 알고 있을 것이다. @MainActor이랑 DispatchQueue모두 메인 스레드에서 작업을 하도록 하는 건데, 둘의 개념을 간단하게 살펴보고 차이를 알아보고자 한다. 📚 들어가기 전iOS에서는 UI 관련 이벤트나, 주요 작업이 항상 메인 스레드에서 실행되어야 한다. 왜냐하면 UIKit이나 SwiftUI가 싱글스레드 환경에서 작동하도록 설계되었기 때문이다! 그럼에도 불구하고 여러 스레드에서 UI관련 이벤트들을 실행했을 땐 싱글 스레드 환경이 아닌 멀티 스레드 환경에서 동시에 접속을 하는 것이기 때문에 데이터가 충돌하여 제대로 된 데이터가 표시되지 않거나, UI가 깨져 원하는 UI가 표시되지 않을 수도 있다. 따라서 어떤 작..
네트워크 요청이나, 비동기 작업할 때 아래와 같은 코드를 본 적이 있을 것이다 func deleteUserProfile(completion: @escaping (Result) -> Void) -> Void 실제로 엄청 많이 사용되기도 하고, 자주 사용되는 만큼 개념을 잘 알고 사용해야 한다 따라서 @escaping 클로저가 무엇인지에 대해 알아보자! 📚 들어가기 전escaping closure를 알기 위해선 클로저에 대해서 기본적으로 알고 있어야 한다! 클로저를 다루면서 escaping closure 클로저에 대해 아주 간략하게 포스팅을 해놨었는데 한번 읽어보고 지금 포스팅을 읽으면 더 이해하기 쉬울 것이다. [iOS/Swift] Closure이전 포스팅에서는 life cycle에 대해서 알아보았는..
우리가 흔히 사용하는 노트북, 컴퓨터, 핸드폰은 성능이 한정되어 있기 때문에 비용이 많이 들거나,메모리를 많이 잡아먹는 작업은 최대한 피해 줘야 한다. 따라서 복잡한 계산이나, 비용이 많이 드는 작업에 적합한 lazy var 키워드에 대해 알아보자! 💡 lazy var 이란?lazy는 lazy키워드를 사용한 변수가 처음부터 메모리에 할당되는 것이 아니라, 필요에 의해 변수가 처음으로 접근이 필요할 때 메모리에 할당되도록 하는 기법이다. 일반 변수랑 다른 점은 뭘까?lazy var처음 접근이 필요할 때 한번 초기화하면 그 값을 저장하여 이후에도 값을 읽을 때 저장된 값을 할당해 준다.var or let선언할 때 메모리에 모두 할당되기 때문에, 당장 사용하지 않더라도 모두 메모리에 할당하게 된다. ..
이전 포스팅에서는 life cycle에 대해서 알아보았는데 오늘은 스위프트의 클로저에 대해서 알아보겠다! 스터디에서 가져온 질문은 아래와 같으며 답변하고 정리하는 식으로 블로그 포스팅을 진행해보겠다. 1️⃣ Swift에서 클로저란 무엇이며 어떻게 사용하나요?클로저에는 함수처럼 이름 있는 클로저도 있고, 이름 없는 클로저도 존재한다. 보통 클로저는 이름 없는 클로저(unnamed closure)를 의미하는데, 여기서 클로저란 사용자의 코드 내에서 전달되어 사용할 수 있는 로직을 가진 중괄호 “{}” 로 구분된 코드의 블럭이며 코드 블록을 캡쳐하고 사용할 수 있는 일급 객체이다. 클로저는 '( )' 괄호를 사용하여 직접 호출하거나, 함수에 인자로 전달하여 나중에 해당함수 내에서 호출할 수 있다. 기본..
프로젝트를 진행하면서 아이디, 비밀번호에 대해 정규표현식 검사를 하다가 swift에서 제공해 주는 클래스에 대해서 알게 되었다. 그래서 어떻게 사용하고 어떤 문제점이 있는지 알아보고자 한다~ 공식 문서에서는 데이터 조회(fetch) 또는 메모리 필터링에 대한 검색을 제한하기 위한 논리적 정의라고 설명되어 있다. 사용방법 .evaluate(with: ) : NSPredicate의 메서드이며 정규식을 판별할 때 주로 쓰인다. .evaluate(with:substitutionVariables:) : NSPredicate의 메서드이며 변수를 포함하는 조건자를 생성할 수 있다. 주로 정규 표현식 검사를 할 땐 포맷 지정자를 통해 값을 변환하거나 비교하는 데 사용된다. ✔️ 포맷지정자 포맷 지정자에는 %d, %c,..
- Total
- Today
- Yesterday
- combine
- hangs
- 스위프트
- foundation models
- 코딩테스트
- mlmodel
- XCTest
- 클로저
- closure
- wwdc25
- internal Combine
- ObservableObject
- detached task
- rxswift
- swiftUI
- 프로그래머스
- UIKit
- unstructed task
- 백준
- asyne-let
- group tasks
- Fastlane
- xcuitest
- CoreData
- Task
- SnapshotTest
- SWIFT
- Xcode
- UITest
- ios
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |