본문 바로가기

스위프트18

컬렉션 타입 Array: 순서가 있는 리스트 컬렉션 Dictionary: 키와 값의 쌍으로 이루어진 컬렉션 Set: 순서가 없고, 멤버가 유일한 컬렉션 Array 멤버가 순서(인덱스)를 가진 리스트 형태의 컬렉션 타입이다. var someArray: [String] = [] var someArray1: [String] = Array() print(type(of: someArray)) // Array print(type(of: someArray1)) // Array Array 활용 만약에 someArray라는 배열을 선언할 때 "let" 키워드로 하면 수정이 안된다. // 요소 추가 someArray.append("apple") someArray.append("banana") print(someArray) // ["a.. 2024. 3. 21.
기본 데이터 타입 Bool Int, UInt Float, Double Character, String Bool true와 false 만을 값으로 가지는 타입 var someBool: Bool = true someBool = false print(someBool) // false Int, UInt Int 정수 타입, 현재는 기본적으로 64비트 정수형 var someInt: Int = -100 someInt = 100 // someInt = 100.2 오류 발생 UInt 양의 정수 타입, 현재는 기본적으로 64비트 양의 정수형 var someUInt: UInt = 100 // someUInt = -100 오류 발생 Float, Double Float 실수 타입, 32비트 부동소수형 실수는 정수를 포함하기 때문에 Int 타입의.. 2024. 3. 21.
상수, 변수 상수 선언 키워드: let 변수 선언 키워드: var 선언 방식 let 이름: 값의 타입 = 값 var 이름: 값의 타입 = 값 값의 타입이 명확하다면 타입은 생략 가능 let constant: String = "차후에 변경이 불가능한 상수 let" var variable: String = "차후에 변경이 가능한 변수 var" var booleanValue = true 상수, 변수 선언 후에 나중에 값 할당하기 let sum: Int var inputValue1: Int = 200 var inputValue2: Int = 300 // sum 선언 후 할당 sum = inputValue1 + inputValue2 print(sum) // 500 // sum = 200 // 오류 발생 변수(var 선언)는 .. 2024. 3. 21.
클로저 클로저란? 클로저는 코드의 블럭이다. 일급 시민으로 전달인자, 변수, 상수 등으로 저장, 전달이 가능하다. ⭐️ 일급시민(frist citizen) 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원한다. 함수는 클로저의 일종으로, 이름이 있는 클로저라고 생각하면 된다. 기본 클로저 문법 { (매개변수 목록) -> 반환타입 in 실행 코드 } 클로저의 사용 아래에서 보면 (String) → String 을 통해 String 타입의 매개변수를 받아 String을 반환하는 함수 타입이라는 걸 알려준다. (클로저는 이름 없는 함수이다.) { ... } 이 부분이 바로 클로저이다. // sayHello라는 상수에.. 2024. 3. 20.
컴플리션 핸들러 - 비동기 처리 (함수가 끝난 후 결과 알려줄 때) 컴플리션 핸들러 (Completion Handler) 이란? 어떠한 작업이 완료된 이후에 진행되는 작업을 담당한다. ▶️ 작업이 끝나면 "return" 키워드를 통해 전달하는 게 아니라 클로저로 전달해야 한다. (return: 비동기 작업을 기다리지 않고, 바로 반환하기 때문에 "nil" 이 나온다.)◀️ ▶️ 클로저는 주로 비동기 작업에 많이 사용된다. 그래서 비동기적인 어떠한 태스크가 끝나고 나서 수행해야 할 블록을 클로저로 작성하면 편리하다. ◀️ 컴플리션 핸들러는 어떻게 사용하나? doSomething 메서드 내부에 DispatchQueue를 통해 print() 메서드 동작에 딜레이를 적용했다. (딜레이를 적용하여 비동기 상황을 재연함) import UIKit class ViewController.. 2024. 3. 19.
Delegate Pattern (델리게이트 패턴) Delegate Pattern 이란? "객체가 자신의 책임을 다른 객체에게 위임(delegate)하는 디자인 패턴"을 의미한다. 예를 들어, 테이블뷰 또는 컬렉션 뷰를 사용할 때 어떤 액션을 취할지에 대한 책임을 뷰컨트롤러에게 UITableViewDelegate 또는 UICollectionViewDelegate를 사용하여 위임한다. 그럼 왜 굳이 "위임"이라는 것을 사용하는 것일까? 애플이 미리 구현해 놓은 UITableView 또는 UICollectionView 등의 내부 코드는 비공개이기 때문에 개발자가 이를 알 수 없고, 그렇기에 수정할 수도 없다. 위에서 예를 든 테이블의 셀을 탭했을때, 상황에 맞는 리액션을 개발자가 코드로 작성해야 한다. 하지만 개발자는 애플이 구현해 놓은 내부 코드를 수정할 .. 2024. 3. 18.