Swift 공식문서 읽기...Day10

김민종·2021년 8월 26일
0

Swift Doc

목록 보기
10/26

Initialization
초기화는 클래스, 구조체, 열거형 인스턴스를 사용하기 위해 준비하는 단계이다. 초기화는 initializer를 정의하는 것으로 구현된다.
이니셜라이저는 특정 타입의 인스턴스를 생성한다.이때 init키워드를 사용한다. 프로퍼티설정과 동시에 값을 할당하면 그값을바로 사용가능하다.

Customizing Initialization
이니셜라이저는 함수와 달리 바로 알아차릴수 있는 수단이 없기 때문에 파라미터의 이름과 타입이 어떤 이니셜라이저를 불러야 할지에 대한 중요한 역할을 한다.그러므로 스위프트는 할당되지 않은 모든 매개변수에 자동으로 인자레이블을 붙인다. 인자레이블 없이 initializer를 부르는 것은 불가능하다.

Initializer Parameters Without Argument Labels
인자레이블을 사용하고 싶지 않다면 를 사용해라.

Optional Property Types
프로퍼티의 최초값이 없거나 추후에 추가될 수 있는 값이 있다면 optional로 선언할 수 있다. 값이 없다면 자동으로 nil처리가 된다.이 때 ?를 사용한다.

Default Initializers
만약 프로퍼티의 초기값이 모두 정의 되어 있다면 이니셜라이저를 사용하지 않고도 기본 이니셜라이저를 사용할 수 있다.

Initializer Delegation for Value Types
이니셜라이저에서 다른 이니셜라이즈를 호출할 수 있다. 위과정을 위임이라 하는데 값타입과 클래스타입에 따라 다르게 호출될 수 있다. 값타입인 구조체, 열거형은 단순한 형태로 호출 될 수 있다.하지만 클래스는 다른 클래스로 호출될 수 있기 때문에 상속된 값들에도 알맞은 값을 넣어줘야한다.
값타입에는 self.init키워드를 사용할 수 있다. 하지만 한번 커스텀 이니셜라이즈를 선언 시 기본 혹은 멤버쪽 이니셜라이저를 사용할 수 없다.

구조체를 초기화 하는 방법 예시이다. 인자이름은 스위프트 공식문서 예시참조 init(), init(origin: Point, size: Size) 그리고 init(center: Point, size: Size)

Class Inheritance and Initialization
클래스의 모든 저장프로퍼티와 상속받은 프로퍼티는 초기값이 할당 되어야 한다. 지정초기자는 클래스의 주 초기자이다.클래스타입은 반드시 한개이상의 지정초기자가 있어야 한다.
편리한 초기자는 초기화단계에서 미리지정한 값을 입력하여 초기화 할 수 있다.
편리한 초기자의 문법은 init 앞엣 convenience를 붙혀준다.
문법에 대해서 알아보면

1.지정 초기자는 반드시 직계 superclass의 지정 초기자를 호출해야 합니다.
2. 편리한 초기자는 반드시 같은 클래스의 다른 초기자를 호출해야 합니다.
3. 편리한 초기자는 궁극적으로 지정초기자를 호출해야 합니다.

이니셜라이저는 파트가 길어 나누어 작성하였음.

profile
신입 ios개발자입니다!

0개의 댓글