프로토콜은 특정 기능 수행에 필수적인 요소를 정의한 Blueprint의 개념이다. 프로토콜을 만족시키는 타입을 프로토콜을 따른다(conform)고 말한다. 프로토콜에 필수 구현을 추하가하거나 추가적인 기능을 더하기 위해 프로토콜을 확장하는 것 또한 가능하다. Java의 인터페이스를 implements 하는 개념과 비슷하다고 생각할 수도 있겠다. 문법부터 차근차근 알아보자. 1. 프로토콜 문법 프로토콜의 정의는 클래스, 구조체, 열거형 등과 유사하다. protocol SomeProtocol { // protocol definition goes here } 프로토콜을 따르는 타입을 정의하기 위해서는 타입 이름 뒤에 콜론을 붙이고 Conforming 할 프로토콜 이름을 적는다. struct SomeStruct..
타입캐스팅은 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층에 있는 다른 superClass나 subClass로 취급하는 방법이다. 타입캐스팅에는 is와 as 두 연산자를 사용한다. 바로 확인해보자. 1. 타입캐스팅을 위한 클래스 계층 구조 선언 타입캐스팅의 동작을 확인하기 위해 클래스를 하나 만들어보자. class MediaItem { var name: String init(name: String) { self.name = name } } class Movie: MediaItem { var director: String init(name: String, director: String) { self.director = director super.init(name: name) } } class Song:..
Swift 또한 런타임 에러를 처리하기 위한 에러의 throwing, chaching, propagating, manipulating 을 지원하는 일급 클래스를 제공한다. 바로 예제와 함께 알아보자. 1. 에러의 표시와 발생 Swift의 Enumdms 값으로 표현되는 에러를 그룹화하고 추가적인 정보를 제공하기에 적합하다. 예를 들어, 게임 안에서 판매기기 동작의 에러 상황을 다음과 같이 표현할 수 있다. enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coinNeeded: Int) case outOfStock } 또한 위 에러를 발생시키려면 throw 구문을 사용하여 아래와 같이 insufficientFunds ..
옵셔널 체이닝은 nil일 수도 있는 프로퍼티나, 메서드 그리고 서브스크립트에 질의를 하는 과정을 말한다. 만약 옵셔널이 프로퍼티나 메소드 혹은 서브스크립트에 대한 값을 갖고 있다면, 그 값을 반환하고 값이 nil이면 nil을 반환한다. 이전에 처음 옵셔널이라는 개념을 공부하면서 슬쩍 접했던 내용이기는 하다. 그 문법과 활용을 자세히 알아보도록 하자. 1. 강제 언래핑의 대체로써의 옵셔널 체이닝 옵셔널 체이닝은 옵셔널 값 뒤에 물음표를 붙여 표현이 가능하다. 옵셔널 값을 강제 언래핑 하기 위해서는 뒤에 느낌표를 붙이는 것과 문법이 비슷하지만, 언래핑을 !로 했는데 만약 그 값이 nil 이라면 런타임 에러를 발생시키지만, 옵셔널 체이닝을 활용하면 런타임 에러 대신 nil이 반환 된다는 것이다. 아래 예제는 ..
Deinitializer는 Initializer와는 반대로 클래스 인스턴스가 소멸되기 직전에 호출한다. 디이니셜라이저는 오직 클래스 타입에서만 사용할 수 있으며, 선언을 위해 deinit 키워드를 사용한다. 일반적으로 swift가 자원의 해제를 자동으로 알아서 해주는데, 열었던 파일을 사용이 끝나고 닫는 것 같이 사용자가 자원 해지를 위해 수동으로 작업 해야하는 경우도 있다. 디이니셜라이저는 클래스당 오직 하나만 선언할 수 있고 파라미터를 받을 수 없다. 기본적인 형태는 다음과 같다. deinit { // perform the deinitialization } 디이니셜라이저는 자동으로 호출되고 수동으로 호출할 수 없다. 부모 클래스의 디이니셜라이저는 자식 클래스에서 따로 선언하지 않아도 자동으로 호출된다..
초기화는 클래스, 구조체, 열거형 인스턴스를 사용하기 위한 준비 작업이다. 이 과정에서 각 저장 프로퍼티의 초기 값을 설정하며, 초기화는 initailizer를 정의하는 것으로 구현할 수 있다. 바로 확인해보자. 1. 저장 프로퍼티를 위한 초기값 설정 인스턴스의 저장 프로퍼티는 사용하기 전에 반드시 특정 값으로 초기화 되어야 한다. - Initializers Initializer는 특정 타입의 인스턴스를 생성한다. Initializer 의 가장 간단한 형태는 파라미터가 없는 init키워드를 사용한 표현이다. init() { // perform some initialization here } struct Fahrenheit { var temperature: Double init() { temperature..
Swift 또한 JAVA 나 C++과 동일하게 객체 지향 언어이기 때문에 부모 클래스의 성질을 자식 클래스에게 고스란히 상속할 수 있다. 바로 한번 알아보자. 1. 기반 클래스 정의 다른 어떤 클래스로 부터 어떤 것도 상속받지 않는 클래스를 기반 클래스라고 한다. JAVA에서는 모든 클래스가 Object 클래스를 상속하지만, swift 는 아무런 클래스도 상속받지 않는 기반 클래스를 가질 수 있다. 우선 Vehicle 이라는 기반 클래스를 하나 정의해보자. 이는 currentSpeed를 프로퍼티로, description을 계산된 프로퍼티로 가지고 있으며 makeNoise() 라는 메서드도 하나 가지고 있도록 한다. class Vehicle { var currentSpeed = 0.0 var descrip..
클래스, 구조체 그리고 열거형에서 스크립트를 정의하여 사용할 수 있다. SubScripts란 Collection, List, Sequence 등 집합의 특정 멤버 엘리먼트에 간단하게 접근할 수 있는 문법이다. SubScripts를 이용하면 추가적인 메서드 없이 특정 값을 할당하거나 가져올 수 있다. 예를들면, 배열 인스턴스의 특정 엘리먼트는 someArray[index] 문법으로, dictionary 인스턴스의 특정 엘리먼트는 someDictionary[key]로 접근할 수 있다. 바로 한번 알아보자. 1. Subscript 문법 Subscripts 선언 문법은 인스턴스 메서드와 Computed 프로퍼티를 선언하는 것과 비슷하다. subscript(index: Int) -> Int { get { // 적..
특정 타입의 클래스, 구조체, 열거형과 관련된 함수를 메서드라고 부른다. 이는 다른 언어의 메서드와 비슷한 특징을 가지고 있다. 한번 확인해보자. 1. 인스턴스 메서드 인스턴스 메서드는 특정 클래스, 구조체, 열거형의 인스턴스에 속한 메서드이다. 이 메서드를 통해 인스턴스의 값을 제어하거나 변경할 수 있다. class Counter { var count = 0 func increment() { count += 1 } func increment(by amount: Int) { count += amount } func reset() { count = 0 } } let counter = Counter() // 초기 count 값은 0입니다. counter.increment() // count 값이 1로 변경 ..
프로퍼티는 클래스, 구조체, 열거형 내부에 선언되어 호출되는 상수나 변수를 의미한다. 프로퍼티의 종류에는 Stored Properties 와 Computed Properties가 있는데, stored는 말 그대로 값을 저장하고 있는 프로퍼티이고, Computed는 값을 저장하고 있지 않고 특정하게 계산한 값을 반환해주는 프로퍼티이다. Computed 는 클래스, 구조체, 열거형에 모두 사용이 가능하지만 Stored는 클래스와 구조체 내에서만 사용이 가능하다. 추가로 프로퍼티 옵저버를 정의하여 값이 변할 때마다 모니터링할 수 있다. 1. Stored Properties 저장 프로퍼티는 앞서 봐왔던 예제와 동일하게 단순히 값을 저장하고 있는 프로퍼티이다. struct FixedLengthRange { var..
- 맛집
- redux
- Promise
- redux-thunk
- await
- react
- 정보보안기사 #실기 #정리
- 인천 구월동 맛집
- react-native
- AsyncStorage
- 이탈리안 레스토랑
- Async
- 인천 구월동 이탈리안 맛집
- 파니노구스토
- javascript
- Total
- Today
- Yesterday