본문 바로가기

Swift23

[Swift] 19. 타입캐스팅 1. 타입캐스팅 - is, as 인스턴스의 타입을 확인 하는 용도 클래스의 인스턴스를 부모 혹은 자식 클래스의 타입으로 사용할 수 있는지 확인 2. 업 캐스팅 - as 부모클래스의 인스턴스로 사용할 수 있도록 컴파일러에게 타입정보를 전환 Any, AnyObject로 타입정보 변환 가능 3. 다운 캐스팅 - as?, as! 자식 클래스의 인스턴스로 사용할 수 있도록 컴파일러에게 인스턴스의 타입정보를 전환 3-1. 조건부 다운 캐스팅 - as? 캐스팅에 부합하지 않으면 (실패시) nil을 반환하기 때문에 결과의 타입은 옵셔널 타입 3-2. 강제 다운 캐스팅 - as! 캐스팅에 부합하지 않으면 (실패시) 런타임 오류가 발생 캐스팅에 성공하면 일반 타입을 반환 2021. 11. 17.
[Swift] 18. 옵셔널 체이닝, nil 병합 연산자 1. 옵셔널 체이닝 옵셔널 체이닝은 nil일 수도 있는 프로퍼티나, 메소드 그리고 서브스크립트에 질의(query)를하는 과정 옵셔널이 프로퍼티나 메소드 혹은 서브스크립트에 대한 값을 갖고 있다면 그 값을 반환하고 만약 값이 nil이면 nil을 반환 여러 질의를 연결해서 할 수도 있음 연결된 질의에서 어느 하나라도 nil이면 전체 결과는 nil // 옵셔널 체이닝 사용 시 하나라도 nil이면 nil func optionalChainingTest(owner: Person?) { if let guardJob = owner?.home?.guard?.job { print("우리집 경비원의 직업은 \(guardJob)입니다") } else { print("우리집 경비원은 직업이 없어요") } } 2. nill 병합.. 2021. 11. 15.
[Swift] 17. 인스턴스 1. 인스턴스 인스턴스는 생성과 소멸 2가지가 존재 이니셜라이저 init 디이니셜라이저 deinit 2. 프로퍼티 기본값 모든 인스턴스는 초기화와 동시에 모든 프로퍼티에 값이 할당 되어야 함 프로퍼티에 미리 기본 값을 할당해두면 인스턴스 생성과 동시에 초기화 됨 class PersonA { // 모든 저장 프로퍼티에 기본값 할당 var name: String = "unknown" var age: Int = 0 var nickName: String = "nick" } // 인스턴스 생성 let kwon: PersonA = PersonA() // 기본값이 인스턴스가 지녀야 할 값과 맞지 않다면 // 생성된 인스턴스의 프로퍼티에 각각 값 할당 kwon.name = "kwon" kwon.age = 30 kwon.. 2021. 10. 14.
[Swift] 16. 상속 1. 상속 클래스, 프로토콜 등 상속 가능 열거형, 구조체 상속 불가 다중 상속 불가능 class 이름: 상속받을 클래스 이름 { /* 구현부 */ } // 기반 클래스 Person class Person { var name: String = "" func selfIntroduce() { print("저는 \(name)입니다") } // final 키워드를 사용하여 재정의를 방지할 수 있습니다 final func sayHello() { print("hello") } // 타입 메서드 // 재정의 불가 타입 메서드 : static static func typeMethod() { print("type method - static") } // 재정의 가능 타입 메서드 : class class func clas.. 2021. 10. 14.