본문 바로가기

상속 상속스위프트의 상속은 클래스, 프로토콜 등에서 가능합니다. 열거형, 구조체는 상속이 불가능합니다. 스위프트는 다중상속을 지원하지 않습니다. 이번 파트에서는 클래스의 상속에 대해서 알아봅니다 소스코드 클래스의 상속과 재정의상속 문법class 이름: 상속받을 클래스 이름 { /* 구현부 */ } // 기반 클래스 Person class Person { var name: String = "" func selfIntroduce() { print("저는 \(name)입니다") } // final 키워드를 사용하여 재정의를 방지할 수 있습니다 final func sayHello() { print("hello") } // 타입 메서드 // 재정의 불가 타입 메서드 - static static func typeMeth.. 더보기
사진 게시판 API 만들기 [1] Perfect 미니 프로젝트 [1] 1. 프로젝트 개요 2. mongoDB 설치 3. 패키지 설치 우분투에 스위프트 설치를 시작으로 이후 두 포스팅에 걸쳐 퍼펙트에 대해 조금 알아보았습니다. 2017/04/03 - [Swift/Perfect] - 우분투(Ubuntu)에 스위프트 설치하기2017/05/17 - [Swift/Perfect] - Perfect 시작하기2017/05/24 - [Swift/Perfect] - Perfect 라우팅 이번 부터는 실질적으로 퍼펙트를 사용하여 작은 미니프로젝트를 해보려합니다.아... 물론 이런 허접한 구성은 실제 서버에서 사용하면 안되지만 간단한 예제로 감만 잡아보는 겁니다. 인증도 없고, 뭐도 없고, 보안도 안되고... 뭐... 암것도 없어요. 그러나 한 번 작은 프로.. 더보기
프로퍼티 - Property 프로퍼티프로퍼티는 클래스, 구조체, 열거형과 연관된 값입니다. 타입과 관련된 값을 저장할 수도, 연산할 수도 있습니다. 소스코드 프로퍼티의 종류인스턴스 저장 프로퍼티타입 저장 프로퍼티인스턴스 연산 프로퍼티타입 연산 프로퍼티지연 저장 프로퍼티이번 파트에서는 지연 저장 프로퍼티를 제외한 저장 프로퍼티와 연산 프로퍼티에 대해 알아봅니다. 정의와 사용프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있습니다. 다만 열거형 내부에는 연산 프로퍼티만 구현할 수 있습니다. 연산 프로퍼티는 var로만 선언할 수 있습니다.연산프로퍼티를 읽기전용으로는 구현할 수 있지만, 쓰기 전용으로는 구현할 수 없습니다. 읽기전용으로 구현하려면 get 블럭만 작성해주면 됩니다. 읽기전용은 get블럭을 생략할 수 있습니다. 읽기, 쓰.. 더보기
Swift 4 변경사항 오늘의 주제 스위프트 4 추가/변경사항 아, 벌써 스위프트가 4번째 버전이 나오네요! 참으로 빠르게 변합니다. 이제 문법적으로 변경되는 부분이 크게 많지 않아서 서 3 버전과 크게 달라진 문법은 많지 않습니다. 내부적으로 수정되거나 추가된 문법이 많고, 삭제된 부분은 거의 없습니다. 긴 말 필요없이 한 번 무엇이 바뀌었는지 살펴볼까요? 스따뚜~~~~~~~~~~~~ 단방향 범위 연산자이제 범위연산자에서 양 쪽 끝을 모두 신경쓸 필요가 없습니다, 야호! [SE-0172] var numbers = [1, 2, 3, 4, 5] // Swift 3 numbers[2.. T? { return dictionary[key] as? T } } let information = CustomModel(dictionary: [.. 더보기
클로저 - Closure 클로저클로저는 코드의 블럭입니다. 일급시민(first-citizen)으로, 전달인자, 변수, 상수 등으로 저장, 전달이 가능합니다. 함수는 클로저의 일종으로, `이름이 있는 클로저`라고 생각하면 됩니다. 소스코드 기본 클로저 문법{ (매개변수 목록) -> 반환타입 in 실행 코드 } 클로저의 사용 // sum이라는 상수에 클로저를 할당 let sum: (Int, Int) -> Int = { (a: Int, b: Int) in return a + b } let sumResult: Int = sum(1, 2) print(sumResult) // 3 함수의 전달인자로서의 클로저클로저는 주로 함수의 전달인자로 많이 사용됩니다. 함수 내부에서 원하는 코드블럭을 실행할 수 있습니다.let add: (Int, Int.. 더보기