일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- UICollectionView
- HIG
- Clean Code
- tableView
- combine
- Observable
- Refactoring
- ios
- 스위프트
- MVVM
- uitableview
- Human interface guide
- 리펙터링
- rxswift
- map
- 애니메이션
- uiscrollview
- clean architecture
- 리팩토링
- collectionview
- UITextView
- 클린 코드
- Xcode
- Protocol
- ribs
- 리펙토링
- swift documentation
- swiftUI
- SWIFT
- RxCocoa
- Today
- Total
목록convenience init (5)
김종권의 iOS 앱 개발 알아가기
기초 지식) 초기화의 종류 1) memberwise init (struct only) struct에서 제공하는 초기화 방법이며, struct의 모든 property에 대해서 자동으로 internal 접근 제한자인 초기화가 생성 struct Person { var name: String var age: Int } let person = Person(name: "jake", age: 30) 2) designated init (class only) 해당 클래스에 의해 선언된 모든 property를 모두 초기화하고 적절한 super class의 init을 호출하여 super class까지 init 프로세스를 진행 Designated init은 그냥 "Designated"를 생략하여 그냥 init으로 사용 cla..
Designated init 코드에서는 designated를 생략하여 init으로만 작성 클래스 내부에 초기화되지 않은채 존재하는 property들을 designated init에서 초기화 필수 class Person { var name: String var age: Int var etc: String? // optional형 > nil로 자동 초기화 // designated init에서 초기화되지 않은 property 모두 초기화 init(name: String, age: Int) { self.name = name self.age = age } } Convenience init 핵심은 '편의' init 해당 코드에서 내부의 designated init 호출이 가능 designated init에서는 se..
Designated init (지정 초기화) 역할: 해당 클래스에 의해 선언된 모든 property를 모두 초기화하고 적절한 super class의 init을 호출하여 super class까지 init 프로세스를 진행 Designated init은 그냥 "Designated"를 생략하여 그냥 init으로 사용 Convenience init (편의 초기화) Designated init의 parameter중 일부를 기본값으로 설정하여 동일한 클래스에서 지정된 initializer를 호출하도록 정의 예시 designated init class Person { let name: String let age: Int let birthDay: String init(name: String, age: Int, birth..
초기화의 핵심 초기화 종류는 2가지 (Designated, convenience) 초기화의 목적: 모든 멤버 초기화 (1단계) + 상속받은 멤버들 customizing (2단계) Designated initializer (지정 초기자) 클래스의 모든 프로퍼티를 초기화 해야함 클래스 타입은 반드시 한 개 이상의 지정 초기자가 필요 init(parameters) { statements } Convenience initializer (편의 초기자) 옵셔널 Convenience init 내부에서 반드시 Designated Init이 호출되어야 함 (self.init()) convenience init(parameters) { self.init() statements } 초기화 규칙 - 모든 멤버가 초기화 되어야..
let b = Boo() 원래의 의미는 "let b = Boo.init()" 1. init의 존재 이유 - 모든 저장 프로퍼티들은 초기화 되어야 함, init키워드는 이것을 도와줌 1 2 3 4 5 6 7 8 9 10 11 class Test{ var a:Int! // nil로 초기화 var b:Int? // nil로 초기화 var c: Int // init으로 초기화 var d: Int // error init(tmp: Int){ self.c = tmp } } (d변수가 초기화 되지 않아서 error) 2. 초기화의 종류 1) 초기화 메소드의 델리게이션: super.init() (연쇄적인 초기화) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class A{ va..