[Swift iOS] 이니셜라이저 (Initializer) 에 대해서 (1)
이니셜라이저란 클래스, 구조체, 열거형의 인스턴스를 사용하기 위해 준비하는 과정입니다. 이 과정에는
- 저장 프로퍼티의 초기값을 설정
을 해주어 새로운 인스턴스의 초기값을 갖게 해 줄수 있습니다.
Objective-C의 이니셜라이저는 리턴값이 있는 반면, Swift에서는 이니셜라이저의 리턴값이 존재하지 않습니다.
디이니셜라이저(deinitializer)는 이니셜라이저의 반대로, 클래스의 인스턴스가 할당해지될 때 메모리 할당을 해제시켜주는 것을 뜻 합니다.
저장 프로퍼티의 초기값 설정
클래스나 구조체는 클래스 인스턴스나 구조체가 만들어질 때 저장 프로퍼티에 알맞는 값이 설정 되어야 합니다.
이니셜라이저의 설정은 간단합니다. 위와같이 init 키워드를 사용하여 설정해주면 됩니다.
구조체에서 temperature 라는 저장 프로퍼티를 만들어 이니셜라이저 내에서 초기값을 설정 해줍니다. 그 후 f 로 인스턴스화를 한 후 temperature 프로퍼티의 값을 print문으로 찍어보게 된다면 32.0으로 초기화가 된 것을 볼 수 있습니다.
혹시 프로퍼티가 항상 같은 초기값을 갖게 된다면, 직관적으로 값을 볼 수 있기 때문에 직접적으로 값을 세팅해주는것을 이니셜라이저를 사용하는 것보다 더 추천합니다.
이니셜라이저 커스터마이징
Input 인자값과 옵셔널 프로퍼티 타입을 이용하여 이니셜라이저를 커스터마이징 할 수 있습니다.
temperatureInCelsius를 사용하여 fahrenheit과 kelvin 두가지 각각 이니셜라이저를 세팅 해 줄 수 있습니다.
이니셜라이저 할때의 인자 값 및 이름 호출
마지막 문단에서 veryGreen을 인스턴스화 하는 당시에, red, green, blue와 같은 인자이름을 명시 해주지 않으면 argument label이 없다는 에러가 납니다. 이때 인자 값을 위와 같이 사용하지 않으려면,
explicit argument label을 사용하는 대신 언더바 (_) 를 사용하면 이름을 호출하지 않아도 인스턴스화가 가능합니다.
옵셔널 프로퍼티 타입의 초기화
값이 없는 저장 프로퍼티를 사용하고 싶다면 옵셔널 타입을 사용하여 타입을 선언해주면 됩니다.