부스트코스 35

16. 클로저 기본 - iOS 프로그래밍을 위한 스위프트 기초

- 클로저 클로저는 실행가능한 코드 블럭이다. 함수와 다르게 이름정의는 필요하지는 않지만, 매개변수 전달과 반환 값이 존재 할 수 있다는 점이 동일하다. 함수는 이름이 있는 클로저이다. 일급객체로 전달인자, 변수, 상수 등에 저장 및 전달이 가능하다. - 기본 클로저 문법 클로저는 중괄호 { }로 감싸져있다. 괄호를 이용해 파라미터를 정의한다. -> 을 이용해 반환 타입을 명시한다. "in" 키워드를 이용해 실행 코드와 분리한다. { (매개변수 목록) -> 반환타입 in 실행 코드 } - 클로저 사용 - 함수의 전달인자로서의 클로저 클로저는 주로 함수의 전달인자로 많이 사용된다. 함수 내부에서 원하는 코드블럭을 실행 할 수 있다.

15. 클래스 vs 구조체 / 열거형 - iOS 프로그래밍을 위한 스위프트 기초

클래스는 참조 타입, 열거형과 구조체는 값 타입이라는 것이 가장 큰 차이이다. 클래스는 상속이 가능하지만, 열거형과 구조체는 상속이 불가능 하다. - 값 타입과 참조 타입 비교 값 타입(Value Type) : 데이터를 전달 할 때 값을 복사하여 전달한다. 참조 타입(Reference Type) : 데이터를 전달 할 때 값의 메모리 위치를 전달한다. - 값 타입을 사용하는 경우 연관된 몇몇의 값들을 모아서 하나의 데이터 타입으로 표현하고 싶은 경우 다른 객체 또는 함수 등으로 전달될 때 참조가 아니라 복사(값 복사) 할 경우 자신을 상속할 필요가 없거나, 다른 타입을 상속 받을 필요가 없는 경우 - 스위프트에서의 사용 스위프트의 기본 데이터 타입은 모두 구조체로 구현 되어있다. 스위스트는 구조체와 열거형..

14. 열거형 - iOS 프로그래밍을 위한 스위프트 기초

- 열거형 Swift 열거형은 다른 언어의 열거형과 많이 다르다. 강력한 기능을 지니고 있어 잘 알아두고 사용하면 좋다. 유사한 종류의 여러 값을 한 곳에 모아서 정의한 것이다. 예) 요일, 월, 계절 등 enum 자체가 하나의 데이터 타입으로, 대문자 카멜케이스를 사용하여 이름을 정의한다. 각 case는 소문자 카멜케이스로 정의한다. 각 case는 그 자체가 고유의 값이다.(각 case에 자동으로 정수값이 할당되지 않음) 각 case는 한 줄에 개별로도, 한 줄에 여러개도 정의할 수 있다. enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 // ... } // 예제 enum BoostCamp { case iosCamp case androidCamp case webCam..

13. 클래스 - iOS 프로그래밍을 위한 스위프트 기초

- 클래스란? 클래스는 참조(reference) 타입이다. 타입이름은 대문자 카멜케이스를 사용하여 정의한다. Swift의 클래스는 다중 상속이 되지 않는다. - 클래스 문법 정의 : "class" 키워드 사용 class 이름 { /* 구현부 */ } 프로퍼티 및 메서드 구현 구조체 - call by value 클래스 - call by reference 타입 메소드에는 상속시 재정의가 불가한 static 메소드와 재정의가 가능한 class 메소드가 존재한다. 클래스 사용 클래스의 인스턴스는 참조 타입이므로 let으로 선언되더라도 인스턴스 프로퍼티의 값 변경이 가능하다. - 학생 클래스 만들어 보기 struct와 같은 예제이다.

12. 구조체 - iOS 프로그래밍을 위한 스위프트 기초

- 구조체란? 스위프트 대부분 타입은 구조체로 이루어져 있다. 구조체는 값(value) 타입이다. 타입이름은 대문자 카멜케이스를 사용하여 정의한다. - 구조체 문법 구조체 정의 : "struct" 키워드 사용 //MARK: - 정의 struct { /* */ } 구조체 프로퍼티 및 메서드 구현 구조체 사용 불변 인스턴스 값을 바꿀 수 없다. 불변 인스턴스의 가변 프로퍼티 또한 바꿀 수 없다. 타입 프로퍼티는 struct에 호출한다. - 학생 구조체 만들어보기 class는 키워드 이지만 'class' (따옴표) 를 통해 변수로 선언할 수 있다. class와 struct 구분하기는 다음에 !

11. 옵셔널 추출 - iOS 프로그래밍을 위한 스위프트 기초

- 옵셔널 추출이란? 옵셔널에 들어있는 값을 사용하기 위해 꺼내오는 것 - 옵셔널 방식 옵셔널 바인딩 1. nil 체크 + 안전한 추출 2. 옵셔널 안에 값이 들어있는지 확인하고 값이 있으면 값을 꺼내온다. 3. if-let 방식 사용 func printName(_ name: String) { print(name) } var myName: String? = nil //printName(myName) // 전달되는 값의 타입이 다르기 때문에 컴파일 오류발생 if let name: String = myName { printName(name) } else { print("myName == nil") } var yourName: String! = nil if let name: String = yourName {..

10. 옵셔널 - iOS 프로그래밍을 위한 스위프트 기초

- 옵셔널이란?? 값이 있을 수도, 없을 수도 있음을 표현 nil이 할당 될 수 있는지 없는지 표현 // someOptionalParm에 nil이 할당 될 수 있다. func someFunction(someOptionalParam: Int?) { // .... } /// someOptionalParm에 nil이 할당 될 수 없다. func someFunction(someOptionalParam: Int) { // .... } someFunction(someOptionalParam: nil) // someFunction(someParam: nil) - 옵셔널을 쓰는 이유 명시적 표현 1. nil의 가능성을 코드만으로 표현가능 2. 문서/주석 작성 시간 절약 안전한 사용 1. 전달받은 값이 옵셔널이 아니라면..

8. 조건문 - iOS 프로그래밍을 위한 스위프트 기초

if-else switch - if-else 구문 if-else 구문의 기본 형태 if만 단독으로 사용해도되고, else, else if 와 조합해서 사용 가능하다. if 뒤의 조건 값에는 Bool 타입의 값만 위치해야 한다. 조건을 감싸는 소괄호는 선택사항이다. let someInteger = 100 if someInteger 100 { print("100 초과") } else { print("100") } // 100 // 스위프트의 조건에는 항상 Bool 타입이 들어와야 한다. // someInteger는 Bool 타입이 아닌 Int 타입이기 때문에 컴파일 오류가 발생한다. //if someInteger { } (..

7. 함수 (새롭게 알게된 점) - iOS 프로그래밍을 위한 스위프트 기초

- 전달 인자 레이블 함수를 호출할 때 함수 사용자의 입장에서 매개변수의 역할을 좀 더 명확하게 표현하고자 할 때 사용한다. 전달인자 레이블은 변경하여 동일한 이름의 함수를 중복으로 생성가능하다. func 함수이름(전달인자 레이블 매개변수1이름: 매개변수1타입, 전달인자 레이블 매개변수2이름: 매개변수2타입 ...) -> 반환타입 { /* 함수 구현부 */ return } // 함수 내부에서 전달인자를 사용할 때에는 매개변수 이름을 사용한다 func greeting(to friend: String, from me: String) { print("Hello \(friend)! I'm \(me)") } // 함수를 호출할 때에는 전달인자 레이블을 사용해야 한다 greeting(to: "hana", from:..

6. 함수 기본, 고급 - iOS 프로그래밍을 위한 스위프트 기초

import Swift func sum(a: Int, b: Int) -> Int { return a + b } //반환값이 없는 함수 func printMyName(name: String) -> Void { print(name) } //Void 는 생략이 가능하다. func printYourName(name: String) { print(name) } //매개변수가 없는 함수 func maximumIntegerValue() -> Int { return Int.max } //MARK: - 매개변수 기본값 // 기본값을 갖는 매개변수는 매개변수 목록 중에 뒤쪽에 위치하는 것이 좋다 func greeting(friend: String, me: String = "kdgt") { print("Hello \(fri..