Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- uikit
- dispatchqueue
- 스유
- 1일1알골
- widgetkit
- 문법
- 멋사
- 알고리즘
- TCA
- 운영체제
- 리액트
- 스위프트
- 네트워크
- widget
- 백준
- c++
- Swift
- 후기
- 위젯킷
- Protocol
- spritekit
- swift concurrency
- 멋쟁이사자처럼
- 영남대
- cs
- 컴퓨터그래픽스
- 웹
- 대외활동
- composable architecture
- SwiftUI
Archives
- Today
- Total
맛동산이
Swift) Convenience init, Designated init을 사용해서 초기화하기 본문
Designated init()이란
지정 이니셜라이저이다.
우리가 class를 사용하면 모든 프로퍼티에 초기값을 할당해줘야 하고 초기화 할수있게 해준다.
class SomeClass { var number: Int var name: String init(number: Int, name: String) { self.number = number self.name = name } }
하지만 이때 단 하나의 프로퍼티라도 초기화가 되지 않으면 에러를 발생시킨다.
convenience init()
💡 convenience init은 왜쓰는가?
바로 init을 할때, 모든 프로퍼티에 초기값을 일일히 넣어주는 작업을 하지 않고, 초기값을 자동으로 넣어주기 위해서 사용한다.
따라서 convenience init은 기본적으로 designated init을 호출한다.
왜냐? designated init을 호출한 거 중에서 몇개의 프로퍼티에 초기값을 넣어주는 작업이기 때문이다.
class SomeClass { var number: Int var name: String var value: Int init(value: Int, number: Int, name: String) { self.number = number self.name = name self.value = value } convenience init(number: Int, name: String) { self.init(value: 12, number: number, name: name) } }
이후 init을 해보면 다음과 같이 나온다.
기본 init과 value에 초기값으로 12가 들어가있는 init으로 두개를 사용할수 있게 된다.
기본적으로 초기값을 주는 경우랑은 뭐가 다른가요???
class AnotherClass { var number: Int var name: String var value: Int = 12 init(number: Int, name: String) { self.number = number self.name = name } }
조금더 명시적으로 인스턴스를 만들때 어떤값들을 초기화 할수있는지, 알려줄수 있다는 장점이 있다는것 뿐?
반응형
'앱 > SwiftUI' 카테고리의 다른 글
SwiftUI) WidgetKit을 사용해서 Widget을 만들기(4) - 앱에서 위젯으로 데이터 보내기 app Group (0) | 2023.08.28 |
---|---|
SwiftUI) WidgetKit을 사용해서 Widget을 만들기(4) - 앱의 데이터 변화를 위젯에서 감지하기 (0) | 2023.08.28 |
SpriteKit) SpriteKit과 scene에 대해서 [SwiftUI] (0) | 2023.08.28 |
SwiftUI) Environment, EnvironmentObject, EnvironmentValues (0) | 2023.07.05 |
SwiftUI) Custom View Modifier 만드는 법 (0) | 2023.07.05 |