Swift의 고차함수
·
App Development/Swift
고차함수란? 고차함수는 다른 함수를 인자로 받거나, 함수는 반환하는 함수입니다. Swift에서는 이런 고차함수를 활용하면 보다 더 간결하고 유연한 코드를 작성할 수 있습니다. 예를 들어, 특정 배열을 나타내는 데이터를 다룰 때 반복문 대시 고차함수를 쓰면 코드를 더 직관적이고 짧게 작성할 수 있습니다. 이를 통해 가독성을 높이고 실수를 줄일 수 있습니다. "배열의 모든 값을 2배로 만들고 싶다면?" 고차함수를 사용하지 않았을 때,let numbers = [1, 2, 3, 4, 5]var doubleNumbers : [Int] = []for number in numbers { doubleNumbers.append(number * 2)}print(doubleNumbers) 고차함수 map를 사용하였을 때,l..
Swift의 에러 처리 (Error handling)
·
App Development/Swift
일부 작업이 항상 실행이 완료되거나 올바른 출력을 보장하지 않습니다. 따라서 특정 상황에서 에러가 발생할 경우 Swift에서는 이를 처리할 수 있는 방법을 제시합니다.에러 표현과 던지기Swift의 열거형을 통해 에러 조건의 그룹을 모델링하여 에러 특성에 대한 추가 정보를 전달할 수 있습니다.enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinsNeeded: Int) case outOfStock} 에러가 발생하면 구문을 정상적인 흐름으로 실행하기 어렵습니다. 따라서 throw 구문을 활용하여 에러를 발생하여, 어떤 지점에서 에러가 발생하였는지 파악할 수 있습니다.throw VendingMachineE..
SKAdNetwork란?
·
Marketing Tool/Mobile Measurement Platform
IDFA의 시대는 저물고 SKAdNetwork의 시대가 왔다기존의 MMP(Mobile Measurement Platform)은 IDFA라는 Device ID를 통해 유저를 특정할 수 있었습니다. 그리고 유저를 특정하는 것은 곧 매체의 기여를 측정할 수 있는 중요한 방법 중 하나로 자리매김합니다.기여를 측정한다는 것은 "유저가 매체의 광고를 통해 앱을 설치하였다"는 것을 정당하게 입증할 수 있는 것입니다. IDFA는 iOS 기기 당 부여되는 고유값이므로 (1) 광고 클릭 및 조회를 통해 수집된 IDFA와 (2) 설치 후 실행 시 SDK를 통해 전송되는 IDFA를 대조하여 동일한 경우 광고를 통해 앱을 설치한 유저로 간주하는 것이지요.  하지만 2021년 4월 iOS 14 버전부터 시장에는 큰 시련이 닥칩니..
Swift에서 동기와 비동기의 차이
·
App Development/Swift
동기 (Synchronous)동기는 작업이 순차적으로 실행되는 방식으로, 하나의 작업이 완료될 때까지 다음 작업이 대기합니다.코드가 작성된 순서대로 실행됩니다.작업이 완료될 때까지 호출한 스레드가 차단됩니다.실행 흐름이 직관적이나 시간이 오래 걸리는 작업이 있다면 성능에 영향을 줄 수 있습니다.동기 예제 코드print("start")Thread.sleep(forTimeInterval: 2) // 2초 대기print("end")// 출력// start// (2초 후)// end 비동기 (Asynchronous)비동기는 작업을 시작한 뒤 다른 작업을 동시에 실행할 수 있는 방식입니다. 작업이 완료되면 나중에 결과를 반환합니다.호출한 스레드가 차단되지 않고, 다음 작업이 바로 실행됩니다.주로 콜백(closur..
Swift의 매개변수(parameter) 정리하기
·
App Development/Swift
Swift 함수 내 매개변수의 기본 이해Swift에서는 매개변수의 타입을 명시적으로 선언해야 합니다. 이를 통해 함수의 입력 데이터 타입을 관리할 수 있습니다.func greet(name: String){ print("hello, \(name)!")}greet(name: "Jin")  In-out 매개변수만약 함수 내에서 외수 변수의 값 변경이 필요한 경우, inout 키워드를 사용해야 합니다.func doubleValue(value: inout Int){ value *= 2}var number = 10doubleValue(value: &number) //inout 매개변수임을 나타내기 위해 변수 앞에 &를 달아서 알려줌print(number) //20 기본값 매개변수 (Default parameters..
Swift에서의 completion
·
App Development/Swift
Swift에서 completion은 주로 비동기 작업을 처리할 때 사용되는 클로저를 의미합니다. 비동기 작업이 완료된 후 특정 작업을 수행하기 위해 호출되는 코드를 포함하는 매개변수입니다. Completion의 목적Completion은 작업이 완료된 시점에 결과를 처리하거나 후속 작업을 실행하도록 설계되었습니다. 예를 들어, 네트워크 요청, 파일 읽기/쓰기, 애니메이션 완료 등 시간이 걸리는 작업에서 사용됩니다. 사용 방식Completion은 함수의 매개변수로 전달되는 클로저 형태입니다. 작업이 끝난 뒤 호출하여 결과를 반환하거나, 작업 완료 후 추가 동작을 실행합니다.  예시 코드기본적인 Completion 사용 예시func fetchData(completion: @escaping (String) ->..
Swift의 Closure 란?
·
App Development/Swift
Swift official document에서는 Closure를 named function을 생성하지 않고 같이 실행하는 Grouped code라고 정의합니다. 클로저 (Closures) | Swift명명된 함수 생성없이 실행되는 코드 그룹입니다. 클로저 (Closures) 는 코드에서 주변에 전달과 사용할 수 있는 자체 포함된 기능 블럭입니다. Swift의 클로저는 다른 프로그래밍 언어에서 클로저,bbiguduk.gitbook.io 기본 syntax는 아래와 같습니다.{ (#parameters#) -> in } 전달받은 매개 변수를 변환 타입에 맞춰 반환 후 실행 코드를 반환합니다. Closure의 유형기본 형태let greeting = { (name: String) -> String in retur..
Swift의 ARC (Automatic Reference Counting)
·
App Development/Swift
ARC는 Automatic Reference Counting의 약자로, Swift에서 메모리를 효율적으로 관리하기 위해 사용되는 메모리 관리 기법입니다. 이는 Objective-C의 메모리 관리 방식을 자동화한 형태로, 프로그래머가 명시적으로 메모리를 해제하지 않아도 메모리 누수를 방지할 수 있도록 설계되었습니다. ARC의 동작 원리ARC는 Class instance의 참조 횟수(Reference count)를 추적합니다.각 class instance는 메모리에서 할당될 때 참조 카운터를 가지고 있습니다.다른 객체나 변수가 해당 instance를 참조할 때 참조 카운터가 증가합니다.참조가 해제될 때(예: 변수가 scope를 벗어날 때) 참조 카운터가 감소합니다.참조 카운터가 0이 되면 ARC는 해당 메모..
Swift에서의 Class
·
App Development/Swift
Class란?Class는 Swift에서 참조 타입으로 객체의 상태와 동작을 정의하는 설계 도구입니다.동일한 객체를 여러 변수에서 참조할 수 있음.상위 클래스를 확장하여 새로운 클래스 설계가 가능.참조 횟수를 추적하여 메모리 해제를 자동으로 관리(ARC를 통한 메모리 관리).상속이 필요하거나 다형성을 구현해야 하는 경우에 사용함.간단한 데이터 구조에서는 struct가 더 적합함.Class와 Struct 한 눈에 비교하기특성ClassStruct참조 타입 vs 값 타입참조 타입 (Reference Type): 동기화됨값 타입 (Value Type)상속 가능 여부상속 가능상속 불가능deinit 지원 여부지원미지원변경 가능 여부var로 선언 시 변경 가능모든 프로퍼티가 기본적으로 불변(let) 상속(inherit..
Swift 분기 처리 정의와 종류
·
App Development/Swift
분기처리(Branch)란?분기처리는 프로그램이 조건에 따라 다른 동작을 수행하도록 만드는 것으로, 실행 흐름을 조건에 따라 나누는 제어 구조를 의미합니다. 특정 조건이 참 혹은 거짓인지에 따라 서로 다른 코드 블록을 실행하거나 건너뛰게 만드는 방식입니다.분기처리의 주요 목적유연한 논리 처리를 가능케 하여 다양한 상황에 대처할 수 있습니다.프로그램이 결정적인 작업을 수행할 수 있도록 심사합니다. Swift에서의 분기처리Swift의 official document에서는 분기처리를 아래와 같이 서술하고 있습니다.Branch statements allow the program to execute certain parts of code depending on the value of one or more condi..
블로그를 열며
·
Genie
2024년 끝자락에 블로그를 다시 시작합니다. 끝없는 커리어 방황을 겪고 있습니다. 아직도 제 갈 길을 제대로 못찾은 것 같아, 블로그에 남긴 기록들이 저의 미래를 결정지어 주진 않을까 하는 막연한 마음을 가지고 블로그를 엽니다. 대학 졸업 후 약 5년 간 커리어 자취를 돌아볼 때 진득함이 부족했다는 생각이 듭니다. 그리고 늘 "그때 시작했을 때 끝을 볼 걸"이라는 후회를 요즘 많이 하고 있습니다. 이 블로그가 자기 효능감을 높여줄 수 있는 소중한 자산이 되길 바랍니다.