INDEX 1. 확장(Extension)이란? 2. 확장 가능 멤버 (6가지) 3. UIKit에서의 확장(Extension) 4. 마무리 1. 확장(Extension)이란? 상속(Inheritence) VS 확장(Extension) (상속 - 수직적 개념) 성격이 비슷한 "타입을 새로"만들어, 데이터를 추가하고, 기능(메서드)을 변형시켜 사용하려는 것 (확장 - 수평적 개념): "현재 존재하는 타입"에 기능(메서드)을 추가하여 사용하려는 것 확장이란 기존타입에 기능을 추가 하는 것으로 1)클래스, 2)구조체, 3)열거형 (그리고 프로토콜) 타입에 확장(새로운 기능 추가) 가능 단, 새 기능을 추가 할 수는 있지만 기존 기능(메서드)의 재정의(overriding) 불가. 기존 타입의 소스코드에 접근 권한이..
INDEX 1. Any 2. AnyObject 3. 옵셔널 값의 Any 4. 다형성(polymorphism)을 통한 타입캐스팅 복습 5. 마무리 이번 포스팅은 쉬어가는 느낌? 짧고 간단하다. Any는 원래 익숙하며, AnyObject는 class에만 한정된 타입으로 타입캐스팅만 알고있다면 금방 이해할 수 있다. 1. Any Any타입은 기본타입(Int, string, Double...), 클래스, 구조체, 열거형, 함수, 옵셔널타입까지 포함하여 어떤 타입의 인스턴스도 표현 가능한 타입을 뜻한다. var some: Any = "Swift" some = 10 some = 3.2 some = "String!!" 단점은 저장된 타입의 메모리구조를 알 수 없기에, 항상 타입캐스팅을 해서 사용해야한다. Any타입의..
INDEX 1. 타입 캐스팅(Type Casting) 2. is연산자 3. ⭐️ as연산자⭐️ 4. Bridging 5. 마무리 1. 타입 캐스팅(Type Casting) 타입캐스팅(Type Casting)이란 인스턴스의 타입을 확인(is)하거나, 해당 인스턴스를 해당 인스턴스의 클래스내의 상위클래스나, 하위클래스로 취급(as?)받을 수 있는 방법을 의미한다. 타입캐스팅은 실제로 인스턴스를 수정하거나 내부 속성값을 변경하는게 아니라(인스턴스 내부 속성 자체는 불변) 컴퓨터에게 어떤 타입으로 인스턴스에게 접근할지를 명령하는 것이다. => (as연산자까지 보면 무슨말인지 알 것이다.) Swift에서 타입캐스팅은 is연산자와 as연산자로 구현된다. is연산자를 통해 인스턴스의 타입을 확인하고, as연산자를 통..
INDEX 1. 필수 생성자(required Initializers) 2. 실패가능 생성자(Failable Initializer) 3. 소멸자(Deinitializer) 4. 마무리 마지막 이니셜라이저들. 어려운 개념이 아니며, 지정 생성자(Designated Initializers), 편의생성자(Convenience Initializer)가 코어 개념이었기에, 2부때보다는 가볍게 다룬다. (이니셜라이저를 줄여서 생성자로 불렀습니다) 1. 필수 생성자(required Initializers) 필수생성자(required Initializers)란 class앞에 required 키워드를 붙여 만들며, 필수생성자를 선언한 클래스를 상속받는 서브클래스는 무조건 상위의 필수 생성자를 구현해줘야 한다. 상속을 받을..
아래의 예제들은 지정생성자(Designated Initializer)와 편의생성자(Convenience Initializer)를 주(main)로 다룬 예제들로, 애플 공식문서의 예제들을 참조하여 코드에 주석을 달아 연습용으로 했던걸 올립니다. 아래의 마무리는 전편의 포스팅을 요약한 것으로 이에 관한 코드예제들입니다. (이니셜라이져(Initializer)를 줄여서 생성자로 불렀습니다.) 5. (초기화와 생성자 2부의) 마무리 이번단원은 생성자, 넓게보면 구조체와 클래스라는 대단원에서 가장 어렵고 헷갈릴 수 있는 단원이다. 하지만 최초에 정의했던 2가지 법칙만 기억하면된다. 현재(Present) 단계에서 선언한 속성 값 초기화(Initialization) 상위클래스의 속성 값은 super키워드를 통해 위임(..
INDEX 1. 지정 생성자(Designated Initializer) 2. 편의 생성자(Convenience Initializer) 3. 생성자 위임 규칙(Initialization Delegation) 4. 생성자 자동 상속(Automatic Initializer Inheritance) - 예외사항 5. 마무리 이니셜라이져(Initializer)를 줄여서 생성자로 불렀습니다. 1. 지정 생성자(Designated Initializer) 지정생성자(Designated Initializers) 클래스내에 있는 모든 속성들을 초기화하는 생성자 생성자 사용시 주의점❗️ 해당 생성자가 종료되기 전까지, 생성자 안의 모든 속성들의 초기화가 이루어져야한다. 상속을 받는다면, 반드시! super클래스의 생성자를 현..
이니셜라이져(initializer)를 줄여서 생성자로 불렀습니다. 초기화와 생성자는 하나의 포스팅으로 다루기엔 범위도 넓고 알게 많기 때문에 크게 3부로 나누었다. 1부에서는 초기화, 생성자가 무엇인지와 구조체의 초기화, 실패가능 생성자(구조체와 열거형에서 사용)에 대해서 2부에서 지정생성자와 편의생성자를 중점적으로 힘주어 다루며 3부에서는 필수생성자와 소멸자, 실패가능생성자(클래스에서 사용)를 다룬다. INDEX 1. 초기화(Initialization)란? 2. 구조체의 초기화 - Memberwise Initializer? 3. 실패가능 생성자(Failable Initializer with sturct and enum) 4. 마무리 1. 초기화(Initialization)란? 초기화(Initializa..
INDEX 1. 상속(Inheritance) 2. 재정의(Overriding) 3. ⭐️속성의 재정의(Overriding Properties)⭐️ 4. 메서드의 재정의(Overriding Methods) 5. final 키워드 6. 마무리 1. 상속(Inheritance) 상속: 쉽게 말하면, 본질적으로 성격이 비슷한 타입을 새로 만들어 1) 데이터(저장속성)를 추가하거나 2) 기능(메서드)를 변형시켜 사용하는 것 Swift에서는 클래스만 상속기능을 보유하고 있으며 다중상속이 불가능하다. 상속은 자식에게 특성을 물려주는 부모클래스(Superclass)와 이를 상속받는 자식클래스(SubClass)의 형태다. 상속을 받는 서브클래스는 슈퍼클래스의 모든 멤버(속성, 메서드)를 상속 받는다. class ACla..