전체 글135 [Swift Concurrency] Swift Concurrency 도입 배경 Swift Concurrency는 Swift 5.5에서 도입된 기능이다. `Foundation`을 import 해야 쓸 수 있는 GCD와 다르게, Swift 언어 자체에 내장된 동시성 모델이다.Swift Concurrency는 크게 두 가지 부분으로 나뉘어진다.`async`, `await` 로 작성하는 새로운 동시성 모델애플리케이션을 여러 동시성 태스크로 분할하는 Actor이 포스트에서는 Swift Concurrency의 도입 배경을 알아본다.GCD의 한계GCD는 Objective-C에서부터 사용해온 애플이 만든 비동기 API다. Queue 기반으로 작업을 스케줄링 하고, 스레드 위에서 추상화 되어있기 때문에 스레드를 직접 생성하거나 관리할 필요가 없다. Swift에서 GCD는 주로 콜백과 함께 쓰인다... 2025. 9. 4. [SwiftUI Tutorials] Handling user input 랜드마크 앱에서 사용자는 좋아하는 장소를 플래그하고, 그들이 좋아하는 장소만 필터해서 볼 수 있다. 이런 기능을 만들기 위해서, 리스트에 스위치를 추가하여 유저들이 그들이 좋아하는 장소에만 포커스를 맞출 수 있도록 해야한다. 그리고 별 모양 버튼을 추가하고, 탭하면 유저들이 랜드마크에 favorite 플래그를 할 수 있도록 한다.Section 1. Mark favorite landmarks리스트를 개선해서 사람들이 한 눈에 favorite를 찾을 수 있도록 시작한다. Landmark 스트럭처에 프로퍼티를 하나 추가해서, 이 랜드마크가 favorite인지 초기 상태를 읽을 수 있도록 한다. 그리고 favorite 표시된 랜드마크에는 별 아이콘을 보여준다.Step 1, 2isFavorite 프로퍼티를 Lan.. 2025. 8. 23. [SwiftUI Tutorials] Building lists and navigation 사용자가 전체 랜드마크 목록을 보고 각 위치에 대한 세부 정보를 볼 수 있는 방법을 제공해야 한다.모든 랜드마크에 대한 정보를 표시할 수 있는 뷰를 생성하고 사용자가 탭하여 랜드마크에 대한 디테일 뷰를 볼 수 있는 스크롤 목록을 동적으로 생성한다. UI를 미세 조정하고 싶으면 Xcode를 사용하여 다양한 장치 크기에서 미리보기를 렌더링 하면 된다.Section 1. Create a landmark model첫 번째 튜토리얼에선, 모든 정보들을 커스텀 뷰에 하드코딩했다. 이제는 뷰로 전달할 수 있는 데이터를 저장하는 모델을 만들 것이다.Step 1landmarkData.json 파일 가져오기Step 2, 3Landmark.swift 파일을 생성하고, landmarkData 데이터 파일에 있는 키와 매칭되는.. 2025. 8. 23. [SwiftUI Tutorials] Creating and combining views Section 1. Create a new project and explore the canvasSwiftUI를 사용하는 새로운 Xcode 프로젝트를 만든다. 캔버스, 미리보기 및 SwiftUI 템플릿 코드를 탐색한다.Step 1-3프로젝트 생성 부분Step 4SwiftUI 앱 라이프 사이클을 사용하는 앱은 App 프로토콜을 컨펌하는 스트럭처를 가지고 있다. 스트럭처의 body 프로퍼티는 디스플레이에 보여줄 컨텐츠를 제공하는 하나 이상의 씬이 있다. @main 어트리뷰트는 앱의 엔트리 포인트를 지정한다.//// LandmarksApp.swift// Landmarks//// Created by Kelly Chui on 6/25/25.//import SwiftUI@mainstruct LandmarksA.. 2025. 8. 23. [프로그래머스] 미로 탈출 명령어 - Swift 문제https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이분명히 배열(문자열)의 원소를 하나씩 채워나가야 하는 DFS 완전 탐색 스타일의 문제인데 k의 최대값이 2,500으로 너무 크다. 하지만 문제에서 주어진 조건들을 읽어보면 프루닝을 통해 백트래킹 문제로 만들 수 있다.현재 위치와 종료 위치 사이의 맨하탄 거리가 남은 이동 횟수보다 적으면, 더 이상 탐색할 필요가 없다.목표에 도달하지 못하는 분기이기 때문에, 분기를 버려야 한다.남은 이동 횟수와 현재 위치와 종료 위치 사이의 맨하탄 거리의 차가 홀.. 2025. 8. 23. [Swift] Macro(매크로) - 2 Macro Expansion매크로를 사용한 Swift 코드를 빌드 할 때, 코드를 확장하기 위해 매크로의 구현을 불러오게 된다.구체적으로 Swift는 다음과 같은 방법으로 매크로를 확장한다:컴파일러가 코드를 읽어, 구문의 in-memory 표현을 만든다.컴파일러가 이 in-memory 표현의 일부를 매크로를 확장시키는 매크로 구현부에 보낸다.컴파일러가 매크로 호출을 확장된 형태로 대체한다.컴파일러가 확장된 소스 코드를 사용하여 컴파일을 계속 진행한다.구체적인 단계들을 살펴보기 위해, 다음을 생각해보자:let magicNumber = #fourCharacterCode("ABCD")`#fourCharacterCode` 매크로는 4개의 캐릭터로 구성된 문자열을 받아, 그 문자열의 ASCII 값들을 이어 붙인 .. 2025. 8. 15. 이전 1 2 3 4 ··· 23 다음