Swift

공식문서 Swift | class(클래스) 필수 생성자 / 실패가능 생성자(c / 소멸자에 관하여

ziziDev 2024. 5. 17. 17:08
반응형

안녕하세요 오늘은

지정 생성자/편의 생성자에 이어서

필수 생성자와 실패가능 생성자

소멸자에 대해서 알아보고자 합니다

 

필수 생성자

|

Required Initialization

 

클래스 생성자 앞에 required 키워드를 사용하게 되면

하위 생성자는 반드시 해당 필수 생성자를 구현해야합니다

 

만약 하위 클래스에서 필수 생성자를 구현할 때

상위 필수 생성자를 구현하더라도

override 키워드가 아닌 required 키워드만 붙이면 됩니다

 

 

또 다른예시를 보고자합니다

 

 

Vehicle 클래스 생성자는 reuiqred 키워드를 사용했기 때문에

서브클래스(자식클래스)에서 required 생성자를 반드시 구현해야합니다

그래서 자식클래스에서 반드시 required를 사용하여 구현하는것을 볼 수 있습니다

 

 

 

실패가능 생성자

|

실패가능 생성자는 인스턴스 생성에 실패할 수도 있는 가능성을 가진 생성자

(클래스, 구조체, 열거형 모두 가능)

정의하는 방법은

생성자에?를 붙여서 init?라고 정의하면 실패가능 생성자 입니다

 

클래스에서 상속에서 재정의도 가능하답니다 :)

옵셔널이 붙었다고 생각하시면 편할것 같네요

 

 

 

구조체도 생성자를 만들 수 있기 때문에

생성자를 만든 Init키워드 뒤에 ?를 붙이면 된다

 

 

열거형도 동일하게 init?로 생성자를 만들어준다

만약 조건에 일치하는 케이스가 없는 경우 nil로 반환하는걸 볼 수 있다

 

 

 

 

 

상속관계에서 실패 가능 생성자와 기본 생성자 호출 및 위임에 대해서 보여주고 있습니다

생성자 호출 예제는 다양한 조건에서 성공과 실패할 수 있답니다

 

(상위) 실패가능
init?
init!
(하위) 실패불가능 재정의(가능) - 강제 언래핑 활용 가능
init!
init?
(상위)실패불가능 (하위) 실패가능 재정의 (불가능) ❌❌❌❌❌

소멸자

|

 

인스턴스가 메모리에서 해제되기 직전 정리가 필요한 내용을 구현하는 메서드입니다

클래스 정의시 클래스에서는 최대 1개의 소멸자를 정의가 가능하답니다

소멸자는 파라미터(매개변수)는 사용하지 않습니다

 

swift에서는 소멸자를 자동참조계산(ARC)형식을 통해 메모리를 관리하기 때문에

수동으로 관리를 할 필요가 없습니다

 

하지만 특별한 작업을 수행하는 경우

몇가지 추가 정리를 직접 수행해야하는 경우가 있을 수 있습니다

 

그리고 소멸자는 클래스에서만 존재하고 있습니다

 

생성자는 필요한 만큼 구현할 수 있지만

소멸자는 하나만 구현이 가능합니다

 

소멸자는 직접호출할 수 없고

인스턴스가 메모리에서 제거되기 직전에 자동으로 호출이 됩니다

 

📕예)

 

✏️ 인스턴스에서 파일을 열고 일부 데이터를 사용하는 경우,

클래스 인스턴스가 할당 해제되기 전에 파일을 닫아야 파일에 손상이 가지 않음

 

소멸자에서는 인스턴스의 모든 속성에 엑세스 할 수 있으며

해당 속성을 기반으로 동작을 수정할 수 있음

(예: 닫아야하는 파일의 이름 조회)

 

이렇게 간단하게 필수 생성자와 실패가능 생성자

소멸자에 대해서 알아보았습니다

 

❤️혹시 잘못된 정보가 있다면 꼭 댓글로 알려주시면 감사하겠습니다❤️

 

 

 

 

✏️참고

앨런스위프트 문법 자료(강의) - ⭐️추천

Swift 공식문서

반응형