Apple🍎/Swift
-
Swift의 컬렉션 타입 : 값 의미론과 실제 구현Apple🍎/Swift 2025. 2. 28. 20:18
Swift 컬렉션 타입의 완전한 이해기본 컬렉션 타입Swift는 세 가지 주요 컬렉션 타입을 제공합니다:배열(Array): 순서가 있고, 인덱스로 접근 가능한 요소들의 컬렉션딕셔너리(Dictionary): 키-값 쌍으로 이루어진 컬렉션세트(Set): 순서가 없고 중복을 허용하지 않는 컬렉션값 타입으로서의 컬렉션과 메모리 관리복사 시맨틱(Copy Semantics)란? : 컬렉션을 변수에 할당하거나 함수에 전달할 때 개념적으로는 '복사'가 일어납니다. 즉, 원본과 복사본은 서로 독립적인 별개의 인스턴스가 됩니다. 만약 배열이 참조 타입이었다면, copy를 변경했을 때 original도 함께 변경되었을 것입니다.var original = [1, 2, 3]var copy = original // 값 복사c..
-
클로저 종결판 2Apple🍎/Swift 2025. 2. 26. 16:31
죽지도 않고 다시 돌아온 클로저 종결판 아직 못 보신 분은 종결판 1부터 보시고 오세요. 츄라이~ 클로저 종결판앱을 개발할 때 꼭 마주치게 되는 '클로저'라는 놈, 이 정도 봤으면 정들 때도 되었는데이놈이 모양도 야시꾸리하고 형태도 왔다 갔다 해서 뭔가 찝찝한 녀석입니다. 그래서 오늘날 잡고 산산조people-analysis.tistory.com아직 좀 남은 거 마저 해치워 버립시다. 레츠기딧~~ Swift에서 클로저의 생명주기와 메모리 관리를 이해하기 위해서는 이스케이핑(Escaping)과 논이스케이핑(Non-escaping)에 대한 이해가 필요한데요. 같이 한번 차근차근히 알아볼까요? 일단 저번 시간에 배운 클로저는 "생성 시점에 환경을 캡쳐(기억)하기 위해 만들어진 녀석"을머리에 붙들어 메두시고여...
-
Swift를 위한 람다 계산법 핵심Apple🍎/Swift 2025. 2. 25. 12:23
람다 계산법이란?람다 계산법은 계산을 함수 형태로 표현하는 형식체계로, 단 세가지의 규칙만으로 모든 계산을 표현할 수 있습니다. 이것이 오늘날 Swift를 포함한 현대 프로그래밍 언어의 함수형 프로그래밍 패러다임의 이론적 기반이 되었습니다. 람다 계산법 세 가지 핵심 요소 1. 변수(Variables) : 가장 기본적인 요소로, 값을 참조하는 이름입니다. Swift에서는 상수나 변수와 같습니다.let x = 10var name = "Swift"2. 추상화(Abstraction) : 함수를 만드는 방법입니다. 람다 계산법에서는 λx.M 형태로 표현하며, "x를 입력으로 받아 M을 계산하는 함수"를 의미합니다.λx.x // 항등 함수 (입력을 그대로 반환)λx.(x + 1) // 입력에 1..
-
고차함수 for SwiftApple🍎/Swift 2025. 2. 25. 00:14
함수의 경우에는 값을 받아 일정한 연산을 수행한 뒤 다시 값을 반환합니다. 이에 비해 고차함수(Higher Order Functions)는 다음 특성 중 하나 이상을 가진 함수를 말합니다.하나 이상의 함수를 매개변수로 받는 함수함수를 결과로 반환하는 함수Swift의 컬렉션 타입(Array, Dictionary, Set 등)에는 여러 유용한 고차함수가 내장되어 있어 데이터 처리를 위한 선언적 프로그래밍 방식을 지원합니다.Swift 주요 고차 함수 map : 컬렉션의 각 요소를 변환하여 새로운 컬렉션을 생성합니다.// 기본 사용법let numbers = [1, 2, 3, 4, 5]let doubled = numbers.map { $0 * 2 }// 결과: [2, 4, 6, 8, 10]// 객체 배열에서 특..
-
클로저 종결판Apple🍎/Swift 2025. 2. 23. 21:58
앱을 개발할 때 꼭 마주치게 되는 '클로저'라는 놈, 이 정도 봤으면 정들 때도 되었는데이놈이 모양도 야시꾸리하고 형태도 왔다 갔다 해서 뭔가 찝찝한 녀석입니다. 그래서 오늘날 잡고 산산조각 내보려고 합니다. 가보시지요. 렛츠기딧 클로저는 보통 어떤 동작을 정의할 때 사용하는데요. 컴포넌트 재활용시 동작부만 따로 프로퍼티로 만든다던가 동작의 일부를 런타임 중에 결정한다던가 등... 근데 생각해보면 이미 동작을 나타낼 수 있는 것이 이미 존재합니다. 이름하여 함수 그쵸 함수를 이용하면 여러 가지 동작을 미리 정의하고 호출을 통해 코드의 여러 부분에서 활용할 수 있졍그럼 이미 있는데 뭐 한다고 클로저라는 것을 만들었을까요????전통적인 함수의 한계전통적인 프로그래밍에서 함수가 연산을 위해 사용 가능한 값..
-
일급객체가 뭔데?Apple🍎/Swift 2025. 2. 18. 23:03
프로그래밍을 하다 보면 '일급 객체'라는 단어를 접하곤 하는데요. 이 '일급'이라는 어감과 실제 설명하는 내용 사이에 간극이 있습니다. 그래서 오늘은 어원부터 출발해서 일급객체가 실질적으로 의미하는 것이 뭔지 알아보려고 합니다. 역사적 배경 옛날 옛적 영국에 '크리스토퍼 스트레이치'라는 아저씨가 살고 있었어요. 그 당시 영국에는 본토 출신과 식민지 출신 사이에 차별이 있었고 1등 시민, 2등 시민으로 나누어 법적, 사회적으로 권리를 제한했어요. 일등시민은 투표권, 재산권등의 모든 권리를 가진 사람들이었고, 이등시민은 제한된 권리만 가진 사람들이었지요. 우리 프로그래밍 언어 설계에 푹 빠져 있던 크리스토퍼 아저씨는 프로그래밍 언어에도 이와 같은 차별이 있다는 것을 발견했어요. // 숫자는 변수에 저장할 수..
-
[Swift] Property 제대로 써보자.Apple🍎/Swift 2023. 12. 12. 15:22
간단한 함수를 계산 프로퍼티로 바꿔보자. 계산 프로퍼티(computed properties)는 겉보기에 인스턴스의 속성 값을 들고 있는 일반 프로퍼티처럼 보인다. 하지만 실제로는 계산 프로퍼티는 어떠한 값도 내부에 저장하지 않고 함수처럼 기능한다. 예를 들어 cookingTimer 라는 객체를 만들고 cookingTimer 안에는 남은 시간을 나타내는 secondsRemaining이라는 프로퍼티를 만들었다고 하자. 이 프로퍼티의 값을 get 해보면 다음과 같이 프로퍼티 값이 계속 변경되는 것을 볼 수 있다. cookingTimer.secondsRemaining // 409 // wait a bit cookingTimer.secondsRemaining // 404 // wait a bit cookingTi..
-
[Swift] Enum을 다양하게 활용해보자.Apple🍎/Swift 2023. 12. 11. 15:59
모델이 가지는 상태값이 OR 일 때는 Struct대신 Enum을 쓰자. 아래와 같은 채팅앱의 메세지가 가질 수 있는 유형은 다음과 같다. 참여 메시지 : “철수 님이 대화에 참여했습니다.” 일반 메시지 : “지금 롤 할 사람” 이모티콘 떠남 메시지 : 철수님이 대화방에서 떠났습니다. 작성중 메시지 : 작성중입니다….. 위와 같은 메시지를 strcut를 통해 모델링 해보면 다음과 같이 작성할 수 있다.import Foundation struct Message { let userId: String. // 참여자 식별자(ID) let contents: String? // 메시지 내용 let date: Date. // 시간 let hasJoined: Bool. // 참여 let hasLeft: Bool. // ..