Danny의 iOS 컨닝페이퍼
반응형
article thumbnail
[iOS/Swift] 프로토콜 Sequence
Xcode/Swift 문법 2023. 1. 19. 01:34

Sequence란? 순차적이고 반복적인 동작을 할 수 있게 만드는 프로토콜입니다. 즉, 순차적인 나열이죠. 선언 protocol Sequence 개요 설명은 공식문서 기반으로 할 예정이므로 자세한 내용을 알고 싶다면 공식문서 를 참고해 주세요. Sequence는 한 번에 하나씩 단계별(step)로 진행할 수 있는 값의 목록(list of values)입니다. 이 Sequence의 요소를 반복하는 가장 일반적인 방법은 for문(for-in loop)을 사용하는 것입니다. let oneTwoThree = 1...3 for number in oneTwoThree { print(number) } // Prints "1" // Prints "2" // Prints "3" 특정 값을 포함하고 있는지 확인을 위해 f..

article thumbnail
[iOS/Swift] AssociatedTypes (프로토콜을 위한 Generic문법)
Xcode/Swift 문법 2023. 1. 13. 02:03

Associated Types (관련 타입) 자 일단 공식문서 부터 보고 가시죠 When defining a protocol, it’s sometimes useful to declare one or more associated types as part of the protocol’s definition. An associated type gives a placeholder name to a type that’s used as part of the protocol. The actual type to use for that associated type isn’t specified until the protocol is adopted. Associated types are specified with the a..

article thumbnail
[iOS/Swift] 프로토콜 Equatable (타입 비교)
Xcode/Swift 문법 2023. 1. 12. 20:33

Equatable Equatable은 비교를 할 수 있는 프로토콜입니다. Equatable의 정의를 한 번 봅시다. public protocol Equatable { /// Returns a Boolean value indicating whether two values are equal. /// /// Equality is the inverse of inequality. For any values `a` and `b`, /// `a == b` implies that `a != b` is `false`. /// /// - Parameters: /// - lhs: A value to compare. /// - rhs: Another value to compare. static func == (lhs: Sel..

article thumbnail
[iOS/Swift] 속성(Properties)의 종류
Xcode/Swift 문법 2023. 1. 4. 23:44

속성(Properties)의 종류 크게 5가지로 나눌 수 있습니다. 저장 속성 - Stored Properties 지연 저장 속성- Lazy Stored Properties 계산 속성 - Computed Properties 타입 속성 - Type Properties 속성 감시자 - Property Observer 저장 속성(Stored Properties) 값이 저장되는 일반적인 속성. 이 자체가 메모리 공간을 갖습니다. 변수(var)나 상수(let)로 선언 가능합니다. 선언 class Person { let name: String = "Daniel" var age: Int = 30 } let daniel = Person() daniel.name // "Daniel" daniel.age // 30 지연 ..

article thumbnail
[iOS/Swift] 속성 감시자 (Observed Properties)
Xcode/Swift 문법 2023. 1. 4. 21:29

속성 감시자 (Observed Properties) 값이 변경될 때 관찰하고 이를 willSet, didSet으로 수행하게 됩니다. 순서는 willSet : 값이 저장되기 직전에 호출됩니다. didSet : 새 값이 저장된 직후에 호출됩니다. 보통 Model의 변경사항을 View에 반영하고자 할 때 사용합니다. 선언 기본적으로 속성 감시자는 초기값이 필요합니다. 만약 초기값을 정해주지 않으면 생성자를 통해서 초기화해야 됩니다. var observer: String = "속성감시자" { willSet { // 바뀔 값이 파라미터로 전달 // 기본적으로 willSet(newValue)으로 구현이 되어있다. } didSet { // 바뀌기 전의 과거값이 파라미터로 전달 // 기본적으로 didSet(oldVal..

article thumbnail
[iOS/Swift] Class와 Struct
Xcode/Swift 문법 2022. 12. 28. 23:24

Class와 Struct는 프로퍼티와 메서드를 다룰 수 있는 틀입니다. propert == 속성, method == 함수 Class & Struct 객체를 찍어내는 틀(설계도, 청사진 등)이라고들 합니다 인스턴스: 설계도의 복제본. 즉, 인스턴스(객체, 실제 데이터)는 틀에서 찍어낸 결과물을 인스턴스라고 합니다. (인스턴스는 실제로 메모리에 할당되어 구체적 실체를 갖춘 것이라는 의미입니다.) 특별히 클래스에서는 인스턴트를 객체(object)라고 부릅니다. 초기화(init)나 이름 뒤에( ) 실행문으로 인스턴스의 생성을 할 수 있습니다. Class & Struct의 차이점 가장 큰 차이는 메모리 저장 방식의 차이입니다. 들어가기 앞서 간단히 메모리 구조가 뭔지 알아봅시다. 코드(Code) : 순차적으로 한..

article thumbnail
[iOS/Swift] 고차함수
Xcode/Swift 문법 2022. 12. 27. 18:25

“함수”를 파라미터로 사용하거나 “함수”를 리턴합니다. 각 데이터를 클로저로 보내 작업을 시킵니다. map 함수 기존 배열의 각 Element를 새롭게 매핑해서 새로운 배열로 리턴하는 함수 (데이터를 변형할 때 사용합니다) var numbers = [1, 2, 3, 4, 5] var mapping = numbers.map { n in return "숫자: \(n)" } var numMapping = numbers.map { $0 * 5 } String형도 일종의 배열(데이터바구니)입니다. String형의 map함수는 각각의 값을 Character형으로 변환시킨 후 배열로 반환합니다. str = "1" + "2" + "3" + "4" + "5" 이렇게 각각의 element들을 뽑아서 배열로 만들 수 있습니..

article thumbnail
[iOS/Swift] inout 파라미터
Xcode/Swift 문법 2022. 12. 27. 16:43

inout 파라미터 함수의 파라미터는 기본적으로 값타입입니다. 파라미터는 임시 상수(let)이기 때문에 변경 불가능 하죠. 그러므로 아래와 같이 전역변수를 함수 안에서 그냥 변경할 순 없습니다. var firstInt = 10 var secondInt = 20 func swap(_ a: Int, _ b: Int) { var temp = a a = b b = temp } swap(firstInt, secondInt) // error: Cannot assign to value: 'a' is a 'let' constant // error: Cannot assign to value: 'b' is a 'let' constant 만약 inout 파라미터를 사용한다면 inout 파라미터는 함수 내에서 변수를 직접 변..

article thumbnail
[iOS/Swift] 타입에일리어스(typealias)
Xcode/Swift 문법 2022. 12. 27. 00:24

Type Alias 사용자가 원하는 이름으로 타입 이름을 만들어 줄 수 있습니다. 즉, 타입의 별칭, 약칭입니다. 가독성 상승. 새로운 타입으로 변경이 아니라 기존 타입의 역할만 해줍니다. 표현식 // 이름에서 첫 글자는 대문자 사용 typealias (사용할 이름) = (설정할 타입) // ex typealias NetworkService = Result typealias Calculator = (Double, Double) -> Double 사용법 간단하게, ThreeStr이라는 이름으로 3개의 String을 타입을 갖고 있는 튜플을 만들어 봤습니다. typealias ThreeStr = (String, String, String) let box: ThreeStr = ("과자", "인형", "Mac"..

article thumbnail
[iOS/Swift] “ = “ 의미
Xcode/Swift 문법 2022. 12. 26. 23:16

의미 오른쪽에 있는 데이터 값을 왼쪽의 데이터 공간에 저장한다. (담는다) var a = 1 var b = a + 7 // 1이란 데이터를 a라는 공간에 저장한다.(담는다) // a + 7란 데이터를 b라는 공간에 저장한다.(담는다) 서로 같다는 뜻이 아닙니다. 같다는 '== , 같지 않다는 '!=' 를 사용해야 합니다.

반응형