소소한개발팁
반응형
article thumbnail
(Swift) 19. Extensions (확장)
컴퓨터 언어/Swift 2021. 12. 17. 18:51

Extensions - 익스텐션을 이용해 클래스, 구조체, 열거형 혹은 프로토콜 타입에 기능을 추가할 수 있습니다. retroactive modeling으로 알려진 것과 같이 원본 코드를 몰라도 그 타입에 대한 기능을 확장할 수 있습니다. 익스텐션은 Objective-C의 카테고리와 유사합니다. Swift에서 익스텐션을 이용해 다음을 할 수 있습니다. * 계산된 인스턴스 프로퍼티와 계산된 타입 프로퍼티의 추가 * 인스턴스 메소드와 타입 메서드의 추가 * 새로운 이니셜라이저 제공 * 서브스크립트 정의 * 중첩 타입의 선언과 사용 * 특정 프로토콜을 따르는 타입 만들기 - 익스텐션은 타입에 새 기능을 추가할 수 있지만 오버라이드는(override)는 할 수 없습니다. Extension Syntax - 익스텐..

article thumbnail
(Swift) 18. Nested Types (중첩 타입)
컴퓨터 언어/Swift 2021. 12. 17. 18:33

Nested Types - 열거형은 특정 구조체나 클래스의 기능을 처리하기 위해 자주 사용됩니다. 이와 비슷하게 특정 문맥에서 좀 더 복잡한 타입을 위해 사용할 수 있는 유틸리티 클래스나 구조체를 정의할 수 있습니다. Swift에서는 이 기능을 위해 중첩 타입(nested types)을 지원합니다. 열거형, 클래스, 구조체를 그 타입 안에서 다시 정의할 수 있습니다. Nested Types in Action - 아래 코드는 블랙잭 게임에서 사용되는 카드를 모델링한 BlackjackCard라는 구조체를 정의한 (예)입니다. - BlackjackCard 구조체는 Suit과 Rank라고 부르는 두 개의 중첩 열거 타입을 포함합니다. - 블랙잭에서는 Ace 카드는 1이나 11로 사용될 수 있습니다. - 이 기능..

article thumbnail
(Swift) 17. Type Casting (타입 캐스팅)
컴퓨터 언어/Swift 2021. 12. 17. 18:24

Type Casting - 타입 캐스팅은 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층에 있는 다른 superclass나 subclass로 취급하는 방법입니다. - 타입캐스팅에는 is와 as 두 연산자를 사용합니다. - 타입캐스팅을 이용하면 특정 프로토콜을 따르는지 확인할 수 있습니다. Defining a Class Hierarchy for Type Casting - 타입캐스팅의 동작을 확인하기 위한 클래스입니다. class MediaItem { var name: String init(name: String) { self.name = name } } - 이 클래스를 서브 클래싱 해서 두 개의 다른 서브클래스를 생성합니다. class Movie: MediaItem { var director: Strin..

article thumbnail
(Swift) 16 . Error Handling (에러 처리)
컴퓨터 언어/Swift 2021. 12. 15. 18:14

Error Handling - Swift에서는 런타임에 에러가 발생한 경우 그것의 처리를 위해 에러의 발생(throwing), 감지(catching), 증식(propagating), 조작(manipulating)을 지원하는 일급 클래스(first-class)를 제공합니다. - 어떤 명령은 항상 완전히 실행되는 것이 보장되지 않는 경우가 있습니다. 그런 경우에 옵셔널을 사용해 에러가 발생해 값이 없다는 것을 표시할 수 있지만, 어떤 종류의 에러가 발생했는지 확인할 수는 없습니다. 이럴 때는 구제적으로 발생한 에러를 확인할 수 있어야 코드를 작성하는 사람이 각 에러의 경우에 따른 적절한 처리를 할 수 있습니다. - 예를 들어, 디스크에서 파일을 읽어 데이터를 처리하는 일을 한다고 할 때 이 작업이 실패할 경..

article thumbnail
(Swift) 15. Optional Chaining (옵셔널 체이닝)
컴퓨터 언어/Swift 2021. 12. 15. 17:36

Optional Chaining - 옵셔널 체이닝은 nil 일 수도 있는 프로퍼티나, 메서드 그리고 서브 스크립트에 질의를 하는 과정을 말합니다. 만약 옵셔널이 프로퍼티나 메서드 혹은 서브 스크립트에 대한 값을 갖고 있다면 그 값을 반환하고 만약 값이 nil이면 nil을 반환합니다. 여러 질의를 연결해서 할 수도 있는데, 연결된 질의에서 어느 하나라도 nil이면 전체 결과는 nil이 됩니다. - Swift에서 옵셔널 체이닝은 Objective-C에서의 nil 메시징과 유사합니다. 차이점은 Swift에서는 옵셔널 체이닝은 reference type뿐만 아니라 primitive타입에서 사용도 가능하고 값을 가져오는 데 성공했는지 실패했는지 확인할 수 있습니다. Optional Chaining as an Al..

article thumbnail
(Swift) 14. Deinitialization (초기화 해지)
컴퓨터 언어/Swift 2021. 12. 15. 00:09

Deinitialization Deinitialization 은 초기자(Initializer)와 반대로 클래스 인스턴스가 소멸되기 직전에 호출됩니다. 초기자는 선언 키워드로 init를 사용하는데 Deinitialization는 선언을 위해 deinit 키워드를 사용합니다. Deinitialization는 오직 클래스 타입에서만 사용 가능합니다. How Deinitilization Works - 일반적으로 Swift가 자원의 해제를 자동으로 알아서 해주는데, 열었던 파일을 사용이 끝나고 닫는 것 같이 사용자가 자원 해지를 위해 수동으로 작업해야 하는 경우도 있습니다. 이럴 때 사용하는 것이 Deinitialization입니다. Deinitialization는 클래스당 오직 하나만 선언할 수 있고 파라미터를..

반응형