[Swift] 16. 클로저(closure) 기본
2020. 11. 2. 20:36
iOS/Swift
클로저 | Closures 클로저는 실행 가능한 코드 블럭 {} 이다. 오브젝트-C 의 블럭과 다른 언어의 람다와 유사하다고 한다. 함수와 다르게 이름 정의는 필요하지 않지만, 매개변수 전달과 반환 값이 존재할 수 없다는 점이 동일하다. 함수는 이름이 있는 클로저 다. 일급 객체로 전달인자, 변수, 상수 등에 저장 및 전달이 가능하다. 참조 타입 이다. 그럼 클로저는 어떻게 사용하는가? { (매개변수 목록) -> 반환타입 in 실행 코드 } 실행 가능한 코드 블럭이라고 했기 때문에 { } 중괄호로 감싸져있다. 괄호를 이용해 파라미터를 정의하고 -> 을 이용해 반환 타입을 명시한다. "in" 키워드를 이용해 실행 코드와 분리한다. func sumFunction(a: Int, b: Int) -> Int { ..
[Swift] 15. 열거형(enum) 기본
2020. 10. 26. 17:36
iOS/Swift
스위프트에서의 열거형은 다른 언어의 열거형과 많이 다르다고 한다. 열거형은 강력한 기능을 가지고 있어 잘 알아두고 사용하면 좋다고 한다. - 유사한 종류의 여러 값을 한 곳에 모아서 정의한 것이다. 예) 요일, 월, 계절 등 - enum 자체가 하나의 데이터 타입으로, 대문자 카멜케이스를 사용하여 이름을 정의한다. - 각 case 는 소문자 카멜케이스로 정의한다. enum BootCamp { // 대문자 카멜케이스 case iosCamp // 소문자 카멜케이스 case androidCamp case webCamp } - 각 case 는 그 자체가 고유의 값입니다. (각 case에 자동으로 정수값이 할당되지 않음) - 각 case 는 한 줄에 개별로도, 한 줄에는 여러개도 정의할 수 있습니다. eum 이름..
[Swift] 14. 구조체와 클래스 비교하기
2020. 10. 20. 21:01
iOS/Swift
구조체와 클래스는 비슷한 점도 있지만 다른 점도 분명하게 있다고 생각한다. 그래서 구조체와 클래스를 비교해서 정리하기로 했다. 구조체와 클래스의 공통점 - 값을 저장하기 위한 프로퍼티를 정의한다. - 기능성을 제공하기 위한 메소드를 정의한다. // 구조체 정의 struct People { // 값을 저장하기 위한 프로퍼티 정의 var name: String = "jaynam" var age: Int = 28 var gender: String = "male" // 기능성 제공을 위한 메서드 정의 func getPeopleInfo() { print("Name : \(name) , Age : \(age) , Gender : \(gender)") } } // 클래스 정의 class Computer { // 값을..
[Swift] 13. 클래스(class) 기본
2020. 10. 20. 19:34
iOS/Swift
1. 클래스(class)란? 클래스는 "참조(reference) 타입" 이다. 클래스는 값 타입인 구조체와 달리 참조 타입인데 그럼 참조 타입이란? 값 타입은 데이터를 전달할 때 원본을 복사해서 전달했기 때문에 메모리 공간을 공유했지만 참조 타입은 데이터를 전달할 때 값의 메모리 위치를 전달한다. 타입 이름은 대문자 카멜케이스를 사용한다. 스위프트에서 클래스는 다중 상속이 되지 않는다. 스위프트에서 상속은 클래스 프로토콜 등에서 가능하고 열거형, 구조체는 상속이 불가능하다. 그리고 스위프트는 다중 상속을 지원하지 않는다는 점을 알아두자. 2. 클래스 문법 및 사용 클래스는 다음과 같이 사용할 수 있다. class 이름 { 구현부 } 구조체와 다르지 않아 보인다. 구조체는 struct 로 정의하고 클래스는..
[Swift] 12. 구조체(struct) 기본
2020. 10. 18. 20:20
iOS/Swift
1. 구조체란? 스위프트 대부분 타입은 구조체로 이루어져 있다. 구조체는 "값(value) 타입" 이다. 여기서 값 타입이란 무엇일까? 상수/변수에 할당되거나 함수에 들어갈 때 그 값이 복사되어 전달된다는 의미이다. 추가적으로, 복사되어 전달된다는 의미는 복사본을 생성한다는 것이 아니라 원본과 복사본이 메모리 공간을 공유하게 만든다는 점이다. 그래서 스위프트의 구조체는 다른 언어보다 더 기능성에 가깝다고 한다. 스위프트에서 모든 기본 타입은 값 타입이고, 구조체로써 구현된다. 그래서 대부분의 타입은 구조체로 이루어져있다고 한다. 타입 이름은 대문자 카멜케이스를 사용하여 정의한다. 2. 구조체 문법 및 사용 struct 이름 { 구현부 } 간단한 샘플을 만들어보았다. struct Sample { var m..
[Swift] 11. 옵셔널 추출 (Optional Unwrapping)
2020. 10. 8. 18:10
iOS/Swift
옵셔널 어떻게 꺼내서 활용하고 어떻게 사용할 수 있는지 공부해봤다. 옵셔널의 값을 꺼내는 방법에는 2가지 방법이 있다. 옵셔널 바인딩 | Optional Binding 옵셔널 안에 값이 있는지 확인한 후에 값을 가져오기 때문에 nil 체크를 함과 동시에 안전한 값을 추출할 수 있다. 옵셔널 바인딩은 if-let 구문을 사용해서 옵셔널의 값을 가져올 수 있다. if-let 구문 또는 if-var 구문을 통해서 옵셔널의 값이 잇는지 없는지 확인하고 가져온다는 뜻인데 예제를 통해 확인해볼 수 있다. func printName(_ name: String) { print(name) } var myName: String? = nil if let name: String = myName { printName(name)..
[Swift] 10. 옵셔널 (Optional)
2020. 9. 23. 20:25
iOS/Swift
스위프트에서의 핵심 개념이라고 하는 옵셔널에 대해서 공부해보았다. 다른 프로그래밍 언어에서는 찾아볼 수 없는 개념이기 때문에 다소 생소했다. 정확히 이해하고 다루는 데까지 시간이 좀 걸리지 않을까 생각한다. 1. Optional | 옵셔널 옵셔널, 그대로 해석해보면 '선택적인' 이라고 해석할 수 있다. 스위프트에서는 값이 '있을 수도, 없을 수도 있다' 는 것을 뜻한다. 옵셔널이 아닌 변수에 nil 값을 할당하려고 하면 아래와 같이 컴파일 오류가 발생한다. 그리고 옵셔널 타입을 사용하라고 "?"를 추가하라고 한다. 간단하게 생각해보면 옵셔널을 사용해서 값이 있는지 없는지 알 수 있다는 것이고 옵셔널이 아니라면 값이 꼭 있어야 한다는 것이다. 옵셔널이 없다면 확인해본 것과 같이 에러가 발생한다. nil 의..
[Swift] 9. 반복문 (for-in, while, repeats-while)
2020. 9. 16. 19:33
iOS/Swift
조건문 만큼이나 반복문도 많이 사용해왔다. 스위프트에서는 어떤 방법으로 반복문을 사용하는지 공부했다.1. for-in 반복문for-each 와 비슷한 구문이다. 딕셔너리의 경우 이터레이션 아이템으로 튜플이 들어온다. 기본 문법은 다음과 같다.for in { }items 에 배열을 넣으면 item 이란 변수로 반복문 내에서 사용할 수 있게 된다. item 을 통해 코드를 구현하면 된다.var integers = [1, 2, 3] for number in integers { print(number) } // ==================== 출력 결과 ==================== 1 2 3integers 라는 배열의 값을 number 라는 변수로 사용해서 출력할 수 있다.2. while 반복문w..