일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Xcode
- Unicode
- IOS
- optional
- Git
- Foundation
- Method
- 이니셜라이저
- String
- 디자인패턴
- type
- enum
- 스위프트
- delegate
- 코딩테스트
- struct
- Class
- Terminal
- instance
- initializer
- extension
- UIKit
- Protocol
- initalizer
- url
- init
- interpace
- property
- Swift
- tuist
- Today
- Total
목록optional (4)
아리의 iOS 탐구생활
🔍 try do-catch Error Handling — The Swift Programming Language (Swift 5.5) Error Handling Error handling is the process of responding to and recovering from error conditions in your program. Swift provides first-class support for throwing, catching, propagating, and manipulating recoverable errors at runtime. Some operations aren docs.swift.org 오류처리(Error Handling)는 프로그램이 오류를 일으켰을 때 감지하고 복구하는 프로..
Protocol Extension extension은 타입을 확장한다. 프로토콜 역시 타입이기 때문에 extension을 활용하여 확장할 수 있다. 프로토콜에는 정의만 한다고 하였는데 extension을 통해 구현을 추가한다는 것이 조금 어색할 수도 있다. 정리하자면 문법적으로는 프로토콜의 구현을 추가하지만 실제로는 프로토콜을 채용한 타입의 구현이 추가된다고 보면 된다. 코드의 중복을 줄이면서 프로토콜을 확장시킬 수 있다는 장점이 있다. 예제를 통해 이해해보자. protocol SayText { var text: String { get set } func say() } extension SayText { func say() { print(text) } } struct A: SayText { var tex..
Protocol Types 프로토콜은 first-class Citizen이다. 즉 독립적인 타입이다. 변수나 상수를 사용할때 자료형으로 사용하거나 파라미터의 자료형으로 사용할 수 있다. 반환타입으로 선언하는 것도 가능하다. protocol TypeA { func say() } class A: TypeA { let text: String = "난 A야!" func say() { print(text) } } let a = A() let t: TypeA = A() // 타입을 프로토콜로 선언하여도 에러가 없다. 확인해보면 프로토콜 타입으로 클래스 인스턴스를 생성하여도 에러가 없다. 왜냐하면 클래스 A는 프로토콜 TypeA를 채택하고 있기 때문이다. 이것은 슈퍼클래스 타입을 저장하는 업캐스팅과 유사하다. 업캐스..
Initializer Requirements 🔍 구조체와 클래스에서 생성자 구현의 차이 구조체는 Memberwise Initializers를 통해 프로토콜 요구사항을 충족시킬 수 있다. 직접 이니셜라이저를 구현해줘도 상관없다. 클래스는 상속을 고려해야하고 모든 서브클래스에서 프로토콜의 요구사항을 충족시켜야 한다. 그래서 클래스에서는 required initializer로 선언해야 한다. protocol Test { var name: String { get } init(name: String) } //struct A: Test { // var name: String // Memberwise Initializers를 통해 프로토콜 요구를 충족시킨다. //} struct A: Test { var name: S..