Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Classes and Structures 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며클래스(Class)와 구조체(structure)는 프로그램의 범용적이며 유연한 코드 블럭을 만들기 위해 사용된다. 클래스와 구조체에 기능을 추가하기 위해 프로퍼티와 메서드를 정의할 수 있다. 또한 Swift에서는 커스텀 클래스와 구조체를 만들 때 인터페이스와 구현부를 다른 파일로 나눌 필요가 없이, 하나의 파일에 구현을 해놓으면 외부 인터페이스를 알아서 만들어준다. 클래스의 인스턴스는 전통적으로 object 라고 부르지만 Swift의 클래스와 구조체는 다른 언어에 비해 기능(functionality)에 많이 가깝다. 이 챕터에서..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Enumerations 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Enumeration(이하 ENUM)은 관련된 값들을 그룹으로 묶어서 common type 으로 정의해준다. ENUM을 이용하면 타입에 안전한(type-safe) 코드를 작성할 수 있다.C에서의 ENUM은 각 케이스마다 Integer 값을 할당했었다. 이것을 raw value라고 한다. Swift에서의 ENUM은 raw value로 여러가지 타입을 사용할 수 있고 심지어 항상 raw value 를 할당하지 않아도 된다. 또한 케이스 각각에 연관된 값들(associated values)을 지정할 수 있다.Swift에서의 ENUM은 기존에는 clas..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Closures 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며클로저는 코드 내에서 전달되거나 사용될 수 있는 기능을 독립적으로 포함하는(self-contained) 블록이다. C와 Objective-C에서의 블록과 유사하다.클로저는 자신이 정의된 콘텍스트에 존재하는 상수/변수의 참조를 캡쳐해서 저장할 수 있다. (closing over) 즉 클로저는 자신이 정의되어 있는 곳의 scope에 속하는 상수/변수의 참조에 접근할 수 있다는 말이다. Swift는 이 과정에서 메모리 관리를 알아서 관리해준다. 캡쳐라는 개념을 모르더라도 걱정하지 마시라. 나중에 자세히 다룬다. 참고로 이 포스트에서는 가이드에 나온 그대로 캡..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Functions 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며함수는 특정 task를 수행하는 자기완결성(self-contained)을 가진 코드들의 집합이다. Swift에서의 함수 문법은 C 스타일의 함수부터 Objective-C 스타일의 메서드까지 모두 표현할 수 있을만큼 유연하다. 함수 파라미터에 디폴트 값을 설정할 수도 있고, 변수를 in-out 파라미터로 넘겨서 함수 실행 후 해당 변수의 값이 변하게 만들 수도 있다.Swift의 모든 함수는 타입을 가진다. 이 타입이라는 것은 함수의 파라미터 타입과 리턴 타입으로 구성되어 있으며, Swift에서 쓰이는 다른 타입들과 마찬가지로 다룰 수 있다. 따라서 함수..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Control Flow 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Swift는 C 스타일 언어와 유사한 스타일의 Control Flow Statements를 제공한다. task를 여러 번 실행하기 위해 while 문을, 조건에 따라 다른 코드를 수행할 수 있도록 if, guard, switch 문을, 수행 도중 특정 코드로 건너뛸 수 있도록 break, continue 문을 제공한다.Swift는 for-in loop를 제공한다. 이것은 array, dictionary, range, string 등을 순회할 때 유용하게 사용할 수 있다. 뒤에서 살펴보겠다.Swift의 Switch 문은fall through (br..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Collection Types 중 Dictionary 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Dictionary는 같은 타입의 Key들과 같은 타입의 Value들이 서로 1:1로 연결되어 있는 Collection 타입이다. Key는 그 각각이 유니크하며 Value를 위한 identifier역할을 한다. 저장 순서는 따지지 않는다. 실제 세계에서의 사전처럼 사용할 Collection Type이 필요할 때 Dictionary를 사용할 수 있다. Swift’s Dictionary type is bridged to Foundation’s NSDictionary class. Dictionary Type Shortha..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Collection Types 중 Set 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Set은 같은 타입의 값을, 중복되지 않게, 순서없이 저장하는 Collection Type.저장순서를 알 필요없고, Collection 안의 값이 모두 유니크해야 할 때 Set을 사용하면 적절하다. Swift’s Set type is bridged to Foundation’s NSSet class. Hash Values for Set TypesSet에 저장될 Type은 반드시 hashable 해야한다.hashable 한 Type이란? : 그 Type이 hash value를 알려줄 수 있다hash value 란? : a = b 일..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Collection Types 중 Array 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Swift에서는 값을 저장하기 위한 세 가지 기본적인 콜렉션 타입 Array, Set, Dictionary를 제공한다.Array : 넣은 순서대로 저장되는 콜렉션Set : 값이 중복되지 않는 순서없는 콜렉션Dictionary : key-value 관계를 가지는 순서없는 콜렉션이 콜렉션 타입들 역시 다른 상수 변수와 마찬가지로 type 체크에 엄격하다. 즉 한번 저장할 값의 type을 정하면 다른 type의 값은 저장할 수 없다. (Any 타입으로 지정시에는 다른 타입의 값들을 저장할 수 있다. Any 타입에 대해서는 나중에 ..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Strings and Characters 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며String은 문자열을, Character는 문자를 저장할 수 있는 타입이다.스위프트의 String은 단순한 문법으로 다룰 수 있다. 특히 String 두 개를 연결할 때 + 연산자만 사용하면 되는데, 이 부분은 Objective-C에 비하면 편해졌다.String에 특정 상수/변수 등을 포함해야 할 때는 Objective-C와 다르게 String 리터럴 안에 \(변수이름)을 넣어야 한다. String Interpolation 부분에서 자세히 살펴보겠다.유니코드 호환이 잘 된다. 모든 String은 encoding-independ..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Basic Operators 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며스위프트는 표준 C 연산자를 대부분 지원한다.스위프트의 연산자에는 코딩 오류를 미리 잡아주기 위한 몇 가지 특별한 점들이 있다. 다음은 그 예시 몇 가지이다.할당 연산자(=)는 어떤 값도 return 하지 않는다. ( if 조건문 안에서 = 대신 == 를 사용하는 것을 방지하기 위해)산술 연산자(+, -, *, /, % 등)는 오버플로우를 미리 감지하여 그런 연산을 허용하지 않는다. (연산결과가 저장될 변수에 오버플로우된 값이 할당됨을 방지하기 위해)또한 스위프트에는 범위 연산자 a..