Programming/Swift
-
Swift - Required InitializerProgramming/Swift 2021. 12. 18. 11:31
안녕하세요 BeePeach입니다 :) 오늘은 Required Initializer (필수 생성자)에 대해서 공부해보려고 합니다. Required라는 의미는 요구된다. 필수의 라는 뜻을 가지고 있습니다. Required init은 의미대로 반드시 구현해야 하는 init을 의미합니다. 프로퍼티에 default value가 없다면 반드시 init이 필요한 거 아니야?? 근데 왜 필수 생성자가 필요하지?? 라는 의문이 들 수 있는데요! Required init은 class에서만 사용됩니다. 그리고 required은 subclass에서 반드시 구현을 해야 한다는 의미입니다. 그리고 subclass에서 superclass의 init을 다시 구현하는 것을 overriding이라 하며 override 키워드를 적어줘야..
-
Swift - Failable InitialIzerProgramming/Swift 2021. 12. 17. 19:36
안녕하세요 BeePeach입니다 :) 길고 길던 initializer 포스팅이 거의 끝나가고 있습니다. 오늘 공부해볼 내용은 Failable initializer입니다. 지금까지 우리가 사용한 init은 초기화에 실패한 적이 없습니다. 하지만 만약 초기화될 값을 네트워크를 통해서 설정하려 하거나 특정 조건에 만족하는 값으로만 초기화하고 싶을 수 있습니다. 또는 init의 파라미터에 원치 않는 값이 전달됐을 경우도 있겠죠. 이럴 때 사용하는 게 failiable initailizer입니다. Failiable Initializer Failable init은 class, structure, enum에서 사용할 수 있습니다. 초기화에 실패할 수도 있고 성공할 수 도 있다. 그럼 성공하면 초기값이 할당되고 실패하..
-
Swift - Initializer - Inheritance, OverridingProgramming/Swift 2021. 12. 11. 20:19
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 주제는 Init의 상속(Ingeritance)과 재정의(Override)입니다. Class는 상속과 재정의를 제공하죠?? 그럼 init은 상속이 가능한지? 가능하다면 언제 가능한지?, init도 override가 가능한지에 대해서 공부해보도록 하겠습니다. Swift에서는 기본적으로 init은 상속이 불가능합니다. 왜 그런지는 잠깐 생각해보면 알 수 있습니다. Superclass의 init이 그대로 상속이 된다면 만약 기본값이 없는 subclass에 정의된 프로퍼티는 초기화가 완벽하게 이루어지지 않은 채로 인스턴스가 생성되게 되겠죠??? 이러한 이유로 기본적으로는 init의 상속은 제한되어 있습니다. 그리고 이 말을 다시 뒤집어 생각하면 위 상황만 없다면..
-
Swift - Initializer - Two Phase InitializationProgramming/Swift 2021. 12. 6. 16:02
안녕하세요 BeePeach입니다 :) 오늘은 Init이 어떻게 초기화되는지에 대해서 조금 더 자세히 공부해보려고 합니다. 처음 보면 어렵게 느껴지지만 사실 어려운 게 하나도 없답니다 :) 천천히 여러 번 읽으면 충분이 이해하실 수 있습니다!! Swift 컴파일러의 4가지 안정성 체크 Swift에서 class의 초기화는 총 2단계로 진행됩니다. 첫 번째 단계에서는 class에서 정의한 모든 stored property에 초기값이 할당됩니다. 모든 stored property의 초기값이 정의되었다면 두 번째 단계가 시작됩니다. 두 번째 단계에서는 인스턴스를 사용할 준비가 되기 전에 stored property들을 custom 할 수 있게 됩니다. Swift complier는 2단계 초기화가 에러 없이 성공하..
-
Swift - Initializer DelegationProgramming/Swift 2021. 11. 28. 19:44
안녕하세요 BeePeach입니다 :) 오늘은 지난 포스팅에 이어서 Initializer의 Delegation에 대해서 공부해보도록 하겠습니다. 이번 장에서는 코드보다 설명이 대부분입니다. Initializer Delegation이란 initializer에서 다른 initializer를 호출하여 코드의 중복을 최대한 없애는 것을 의미합니다. Delegation은 Value type과 Reference type에서 구현방식이 조금 다릅니다. 이유는 상속의 유무 때문입니다. 그럼 먼저 Value type의 delegation부터 알아보도록 하겠습니다. Value Type의 initializer Delegation Value Type은 상속이 없기 때문에 delegation이 매우 간편합니다. 그냥 initia..
-
Swift - Initializer 기초Programming/Swift 2021. 11. 13. 14:15
안녕하세요 BeePeach입니다 :) 오늘은 Initializer(생성자)에 대해서 공부해보도록 하겠습니다. class, struct, enum의 인스턴스를 사용하기 위한 준비과정을 Initialization(초기화)라고 합니다. 초기화 과정에는 해당 타입이 가지고 있는 모든 stored property가 초기값을 가지도록 해야 합니다. 이러한 초기화 과정을 Initailizer(생성자)에서 구현하면 됩니다. 다시 말하자면 인스턴스를 생성하는 작업을 초기화라고 하고 생성자는 초기화를 담당합니다. Initialzer 위에서 class와 sturct의 stored property는 인스턴스가 생성될 시점에 반드시 초기값을 가지고 있어야 한다고 했습니다. 초기값은 initializer에서 구현하거나 defau..
-
Swift - Inheritance (상속)Programming/Swift 2021. 11. 11. 00:24
안녕하세요 BeePeach입니다 :) 오늘은 class에서만 사용 가능한 특별한 기능 중에 하나인 Inheritance(상속)에 대해서 공부를 해보려 합니다. class는 method, property 등을 다른 class에게 상속시킬 수 있습니다. 이때 물려주는 class를 superclass, parentclass, 물림을 받는 class를 subclass childclass라고 합니다. Swift에서는 한 subclass가 2개 이상의 superclass를 가질 수 없습니다. 그럼 상속에 대해서 천천히 알아보도록 하겠습니다. Base Class Base class란 아무것도 상속받지 않은 class를 말합니다. 저장 프로퍼티, 연산 프로퍼티, 메서드를 가지는 Figure라는 baseClass를 만들..
-
Swift - SubscriptProgramming/Swift 2021. 11. 7. 20:19
안녕하세요 BeePeach입니다 :) 오늘은 Subscript (서브스크립트)에 대해서 공부해보려 합니다. 서브스크립트란 colletcion, seqence의 멤버에 쉽게 접근할 수 있도록 해주는 문법입니다. 메서드를 따로 생성하지 않고 멤버의 값을 바꾸거나 읽을 수 있게 해 줍니다. 단어는 생소하지만 우리는 이미 사용하고 있었습니다. 배열과 딕셔너리에서 []로 접근하는 문법이 바로 subscript입니다. 래퍼런스에 가서 Array를 보면 이렇게 subscript가 이미 구현되어 제공되는 것을 볼 수 있습니다. 그럼 어떻게 구현하는지 서브스크립트를 만들어 보겠습니다. Syntax struct, class, enum에서 서브스크립트를 구현할 수 있습니다. 문법은 subscipt 키워드를 이용합니다. 한 ..