목록Swift (35)
Jupyo's Daily Story
async/await는 비동기 코드의 가독성과 관리성을 높여주는 Swift의 중요한 기능입니다. 이 구조는 콜백 지옥을 해결하고, 동기 코드처럼 작성할 수 있어 비동기 흐름을 단순화합니다. async 함수 정의비동기 함수를 선언할 때 async 키워드를 사용합니다. 이 함수는 비동기 작업을 포함하여, 호출할 때 비동기적으로 처리됩니다.func fetchUserData() async -> String { // 서버에서 사용자 데이터를 가져오는 비동기 작업 return "User Data"} await로 비동기 작업 기다리기await 키워드를 사용하여 비동기 함수가 완료될 때까지 기다릴 수 있습니다. 이는 비동기 작업이 완료된 후 다음 코드를 실행할 수 있도록 해줍니다.let userData = ..
GCD(Grand Central Dispatch)는 멀티스레딩을 쉽게 처리할 수 있는 저수준 API로, 비동기와 동시성 처리를 효율적으로 구현할 수 있게 도와줍니다. GCD는 앱이 여러 작업을 동시에 처리하거나 특정 작업을 비동기적으로 실행하도록 지원합니다. DispatchQueueGCD에서 작업이 실행되는 큐를 DispatchQueue라고 하며, 이를 통해 작업을 직렬(Serial) 또는 병렬(Concurrent)로 처리할 수 있습니다.Serial Queue: 작업을 하나씩 순차적으로 실행. 한 작업이 끝나야 다음 작업이 실행됩니다.Concurrent Queue: 여러 작업을 동시에 실행. 완료 순서가 보장되지 않지만, 작업은 병렬로 실행됩니다. 동기(Synchronous)와 비동기(Asynchrono..
튜플(Tuple)은 여러 값을 하나의 그룹으로 묶는 데이터 타입입니다. 서로 다른 타입의 값들을 하나로 결합할 수 있어, 함수에서 여러 값을 반환하거나 임시적으로 데이터를 묶어야 할 때 유용합니다. 튜플 선언 및 사용아래 예제는 문자열과 정수를 묶어 하나의 튜플로 정의한 것입니다.let person = ("John", 25) 타입을 명시하는 경우let person: (String, Int) = ("John", 25) 원하는 만큼 타입 포함 가능let person: (String, Int, Float) = ("John", 25, 175.8) 튜플의 값 접근튜플에 저장된 값은 분배, 인덱스 또는 이름으로 접근할 수 있습니다. 분배 (Decompose)let (name, age, _) = personpri..
Announcing Swift 6We’re delighted to announce the general availability of Swift 6. This is a major new release that expands Swift to more platforms and domains.www.swift.org Swift 6가 공식 출시되어 더 많은 플랫폼과 도메인으로 확장됩니다. 앱 개발 외에도 Swift는 라이브러리, 인터넷 서비스, 성능이 중요한 코드에 적합하며, 이번 릴리즈에는 저수준 프로그래밍, 임베디드 Swift, Linux 와 Window 지원, 크로스 플랫폼 API 및 Swift Testing 라이브러리가 추가되었습니다. 언어와 표준 라이브러리 동시성Swift 6는 새로운 언어 모드로 동시성..
옵셔널(Optional)은 값이 존재할 수도 있고 존재하지 않을 수도 있는 상황을 안전하게 처리할 수 있게 도와주는 타입입니다. 다른 언어에서는 값이 없음을 null 또는 nil로 표현하지만, Swift는 옵셔널을 통해 값이 없을 가능성을 명확하게 나타내며, 안전한 방식으로 처리할 수 있도록 도와줍니다. 옵셔널이란?옵셔널은 특정 변수나 상수에 값이 있을 수도 있고 없을 수도 있다는 것을 명시적으로 나타내는 타입입니다. 이를 통해 nil 값이 들어갈 수 있는 변수를 안전하게 다룰 수 있습니다. 옵셔널은 값이 없을 때 nil을 사용합니다. 옵셔널 타입의 선언옵셔널은 물음표(?)를 사용하여 선언합니다.var name: String? // name은 String일 수도 있고 nil일 수도 있음name = "..
열거형이란?열거형은 특정 타입에서 가질 수 있는 유한한 값의 집합을 정의하는 데이터 타입입니다. 예를 들어, 방향(동, 서, 남, 북)이나 요일(월, 화, 수 등)처럼 선택할 수 있는 값이 정해진 상황에서 열거형을 사용하여 코드의 가독성과 안정성을 높일 수 있습니다. 기본 열거형 선언열거형을 선언할 때 enum 키워드를 사용합니다. 각 케이스(case)는 열거형이 가질 수 있는 값을 정의합니다.Swift에서는 열거형 이름과 각 케이스 이름이 카멜 케이스(Camel Case)로 작성되는 것이 일반적입니다.enum CompassDirection { case north case south case east case west} 이 열거형은 나침반의 방향을 나타내는 CompassDirecti..
변수(Variable)와 상수(Constant)는 데이터를 저장하는 중요한 개념입니다. 이 둘은 코드에서 다루는 값들을 메모리에 저장하고, 그 값들을 필요할 때 참조하거나 변경할 수 있게 해줍니다. Swift에서는 변수와 상수를 각각 var 와 let 키워드를 사용해 선언합니다. 변수(var)변수는 저장된 값을 변경할 수 있는 저장소입니다. 한 번 선언된 변수의 값을 이후에 다른 값으로 수정할 수 있습니다. 선언과 사용 예시var message = "Hello, World!"message = "Hellow, Swift!" // 값 변경 가능var 키워드로 변수를 선언하고, 이후 변수에 다른 값을 할당할 수 있습니다.변수를 선언할 때 타입을 명시적으로 지정할 수도 있습니다.var count: Int = 1..
Swift에서 이진수(binary number)를 다루는 방법은 매우 간단하며, 숫자를 이진수 형식으로 표현하거나 변환할 수 있는 다양한 방법을 제공합니다. 이진수는0과1로만 이루어진 숫자 체계로, 컴퓨터 시스템에서 데이터를 저장하고 처리할 때 기본적으로 사용됩니다. 1. 이진수로 숫자를 변환하기Swift에서 정수를 이진수로 변환하는 가장 간단한 방법은 String을 사용하여 이진 표현으로 변환하는 것입니다.let number = 10let binaryString = String(number, radix: 2) // radix: 2는 2진법을 의미print(binaryString) // "1010" 2. 이진수로부터 정수로 변환하기이진수 문자열을 정수로 변환하는 방법도 매우 쉽습니다. Int 생성자를 사..
앱이 백그라운드로 진입했을 때에도 소리가 들리도록 하려면 playback을 적용하면 된다. 그런데 간혹 playback을 적용하였음에도 백그라운드에서 소리가 멈추는 문제가 있어 확인해보니, 아래와 같이 iOS 15부터 사용하는 옵션이 추가 되었다. audiovisualBackgroundPlaybackPolicy AVPlayerAudiovisualBackgroundPlaybackPolicy | Apple Developer Documentation Policies that describe playback behavior when an app transitions to the background while playing video. developer.apple.com 자세한 내용은 링크를 확인하고, 필요한 상..
Lazy는 Swift에서 지연 초기화를 제공하는 속성으로, 특정 값을 필요로 할 때까지 계산을 미루는 기능을 제공합니다.Lazy 속성을 사용하면 객체가 처음으로 접근될 때 초기화가 이루어지며, 이후에는 저장된 값이 재사용됩니다. 이렇게 하면 불필요한 초기화를 방지하고 성능을 개선할 수 있습니다. 기본 사용법Lazy 속성은 var로 선언된 속성만 지원합니다. 다음은 Lazy 속성을 사용하는 예입니다.class DataLoader { lazy var data: [String] = { // 이 클로저는 data가 처음으로 접근될 때 실행됩니다. print("Data is being loaded") return ["Item1", "Item2", "Item3"] }..