본문 바로가기

etc/Swift28

타입 캐스팅(Type Casting) 오늘은 타입 캐스팅에 대해 공부하였다. 본래의 타입 캐스팅이란 이런거였다. let someInt: Int = 100 let someDouble: Double = Double(someInt) 이러느낌으로 int 형의 인스턴스를 Double로 바꾸던가 뭐 그러한 방법. 근데 스위프트에서는 이런 행위를 타입 캐스팅이라고 부르지 않는다. 얘는 따로 Double 형을 하나 더 생성한 느낌이다. 아무튼 완전히 다르다. 스위프트에서의 타입 캐스팅이란, 인스턴스의 타입을 확인하는 용도이다. 또는 클래스의 인스턴스를 부모 혹은 자식 클래스의 타입으로 사용할 수 있는지 확인하는 용도로 쓰인다. 말 그대로 그냥 확인해주는 도구이다. 키워드는 is, as 를 사용한다. 클래스 만들기 class Person { var name.. 2021. 5. 28.
옵셔널 체이닝(부제 - 갈고리 살인마) 오늘은 옵셔널 체이닝에 대해 알아보았다. 옵셔널 체이닝은 옵셔널 요소 내부의 프로퍼티로, 또다시 옵셔널이 연속적으로 연결되는 경우 유용하게 사용할 수 있다. 연속적 사용 import Swift class Person { var name: String var job: String? var home: Apartment? init(name: String) { self.name = name } } class Apartment { var buildingNumber: String var roomNumber: String var `guard`: Person? var owner: Person? init(dong: String, ho: String) { buildingNumber = dong roomNumber = ho.. 2021. 5. 28.
인스턴스 생성과 소멸 오늘은 인스턴스 생성과 소멸에 대해 알아보았다. 생성은 init, 소멸은 deinit 키워드로 만든다. 보통의 프로퍼티 초기화 class PersonA { // 모든 저장 프로퍼티에 기본값 할당 var name: String = "unknown" var age: Int = 0 var nickName: String = "nick" } let jason: PersonA = PersonA() jason.name = "jason" jason.age = 30 jason.nickName = "j" // 우리는 초기화와 동시에 프로퍼티에 값을 할당하고 싶은데, 그럴 방법이 없다 이말이다. 보통은 이렇게 먼저 클래스에서 프로퍼티를 생성해주고 난 뒤, 기본값을 할당 해주어야 한다. 안그러면 컴파일러가 뺴애애액 거린다. .. 2021. 5. 28.
상속 오늘은 상속에 대해 알아보았다. 여러 언어들에도 있는 상속은 무언가를 만들때 정말 중요한 역할을 하게 된다. 직관성 있게 만들 수 있고, 이미 만들것을 또 만들 필요가 없기 때문이다. 하지만 Swift의 상속은 조금 다르다. 특징을 살펴보자 스위프트의 상속은 클래스, 프로토콜 등에서 가능하다 열거형(enum), 구조체는 상속이 불가능 하다 스위프트는 다중상속을 지원하지 않는다 이번 절에서는 클래스의 상속을 알아본다 스위프트의 상속은 클래스, 프로토콜에서 사용이 가능하다. 열거형이나 구조체에서는 사용이 불가능하고, 다중상속이 안된다. 단일 상속만 가능하다는 말이다. 이 점은 약간 의외지만 사용을 하다 보면 왜 그런지가 나올듯 싶다. 클래스의 상속과 재정의 class 이름: 상속받을 클래스의 이름 { /* .. 2021. 5. 28.
프로퍼티 감시자 오늘은 프로퍼티 감시자를 공부했다. 프로퍼티 감시자(Property Observers)는 프로퍼티 값이 변경될 때 원하는 동작을 수행 하게 할 수 있는 기능이다. struct Money { // 프로퍼티 감시자 사용 // 저장 프로퍼티이다. 뒤에다가 블럭을 만든다. var currencyRate : Double = 1100 { // 바뀌기 직전에 호출 willSet(newRate) { print("환율이 \(currencyRate)에서 \(newRate)으로 변경될 예정입니다.") } // 바뀌었다. 에 호출 didSet(oldRate) { print("환율이 \(oldRate)에서 \(currencyRate)으로 변경 되었습니다.") } } } 프로퍼티 감시자는 저장 프로퍼티 뒤에 블럭을 만들어 사용 .. 2021. 5. 27.
프로퍼티 오늘은 프로퍼티의 다양한 사용에 대해 공부했다. 프로퍼티는 구조체, 클래스, 열거형 내부에 구현 할 수 있다. 약간 C++로 따지자면 생성자, 함수, 변수 등으로 나눠지는 느낌이다. 단 열거형 내부에는 연산 프로퍼티만 구현할 수 있다. 인스턴스 저장 프로퍼티 struct Student { // 인스턴스 저장 프로퍼티 var name: String = "" var `class`: String = "Swift" var koreanAge: Int = 0 } 각 타입에 맞는 것들을 저장 할 수 있는 저장 프로퍼티이다. 인스턴스 연산 프로퍼티 struct Student { // 인스턴스 연산 프로퍼티 var westernAge: Int { get { return koreanAge - 1 } // 직접 저장하고 그.. 2021. 5. 27.

IT_learning's Commit