Apple 제공 Swift 프로그래밍 가이드(4.2)의 The basics 부분을 공부하며 정리한 글입니다. 개인적인 생각, 이해를 돕기 위한 예제도 조금 들어가있습니다. 들어가며Swift는 iOS, macOS, watchOS, tvOS 앱 개발을 위한 새로운 프로그래밍 언어입니다. 그렇지만 Swift의 많은 부분들은 당신이 C와 Objective-C 개발 경험이 있다면 친숙하게 느껴질 것입니다.C와 Objective-C에서 사용하는 모든 근본적인 타입들에 대해 Swift는 자신만의 고유한 버전을 제공합니다. 예를들어 Integer를 위한 Int, floating-point value를 위한 Double과 Float, Boolean value를 위한 Bool, 텍스트 데이터를 위한 String 등이 있습..
Apple 제공 Swift 프로그래밍 가이드(4.2)의 A Swift Tour 부분을 공부하며 정리한 글입니다. 개인적인 생각, 이해를 돕기 위한 예제도 조금 들어가있습니다. 들어가며새로운 언어를 시작할 때 우리는 전통적으로 "Hello, world!"를 출력해봅니다. Swift에서 이것은 다음 한 줄로 해볼 수 있습니다.print("Hello, world!") 만약 당신이 C 혹은 Objective-C를 사용해보았다면 Swift의 문법은 당신에게 친숙하게 느껴질 것입니다. input/output 혹은 string handling을 위한 별도의 라이브러리를 import 할 필요없이 위의 한 줄로 끝납니다. global scope에 작성된 코드는 프로그램의 entry point로 사용됩니다. main() ..
Apple 제공 Swift 프로그래밍 가이드(4.2)의 Version Compatibility 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. Version CompatibilityXcode 10.0의 디폴트 Swift 버전은 4.2입니다. Swift 4 혹은 Swift 3으로 작성된 코드를 빌드하려면 Xcode 10.0이 필요합니다. Swift 4.2 컴파일러는 Swift 3.4 이상의 코드에서 호환됩니다. 따라서 여러 버전의 Swift 컴파일러와 호환되는 코드를 작성하기 위해서는 #if swift(>=3.4) 같은 식의 conditional compilation block을 사용해야 합니다. Xcode 9.2로 Swift 3 코드를 빌드할 때도 Swift 4에 도입된 새로운 기..
Apple 제공 Swift 프로그래밍 가이드(4.2)의 About Swift 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. About SwiftSwift는 소프트웨어를 만드는 환상적인 방법을 제공합니다. 폰, 데스크탑, 서버 등 코드를 돌릴 수 있는 모든 환경을 위해 Swift는 존재합니다. Swift는 안전하고, 빠르며, 상호작용적인 프로그래밍 언어입니다. 폭넓은 Apple 엔지니어링 문화와 오픈 소스 커뮤니티의 다양한 의견들에서 지혜를 빌린 최고의 모던 언어적 사고가 Swift에 녹아들어 있습니다. 컴파일러는 성능 면에서, 언어는 개발 면에서, 절충없이 최적화되었습니다.Swift는 프로그래밍 입문자에게 편하게 느껴질 것입니다. Swift는 산업적 품질 언어로서 손색이 없는 스..
Apple 에서 제공하는 프로그래밍 가이드 중 Threading Programming Guide의 Thread Management 챕터를 공부하며 기록용으로 정리한 글입니다. 전문을 번역한 글이 아닌 점 참고바랍니다. 들어가며OS X 또는 iOS 의 각 프로세스(어플리케이션)는 하나 또는 그 이상의 쓰레드로 구성됩니다. 이때 하나의 쓰레드는 코드를 통해 실행되는 하나의 경로 (single path of execution through the application's code) 를 나타냅니다. 모든 어플리케이션은 메인 함수를 실행하는 싱글 쓰레드로 시작합니다. 어플리케이션은 특별한 역할의 코드를 실행할 추가적인 쓰레드들도 생성할 수 있습니다.어플리케이션이 새로운 쓰레드를 생성했을 때, 그 쓰레드는 어플리케..
Apple 에서 제공하는 프로그래밍 가이드 중 Threading Programming Guide의 About Threaded Programming 챕터를 공부하며 기록용으로 정리한 글입니다. 전문을 번역한 글이 아닌 점 참고바랍니다. 들어가며오랫동안 컴퓨터의 최대 퍼포먼스는 싱글 마이크로프로세서의 속도에 따라 크게 좌우되었습니다. 그러나 멀티코어 디자인이 도입되면서 컴퓨터는 여러 테스크를 동시에 수행할 수 있는 기회를 제공받게 되었습니다. OS X는 시스템 관련 테스크를 수행할 때 이런 멀티코어를 활용하고 있으며, 당신의 어플리케이션 역시 쓰레드를 통해 이런 것들을 활용할 수 있습니다. 그럼 지금부터 쓰레드라는 것의 개념과 역할에 대해 알아보겠습니다. What Are Threads?쓰레드 (Thread)..
Apple 제공 Swift 프로그래밍 가이드(3.1)의 Advanced Operators 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Swift는 복잡한 연산을 위한 몇 가지 고급 연산자들을 제공한다. 예를들면 bitwise 와 bit shifting 연산자들이다.C의 산술 연산자와 다르게 Swift의 산술 연산자는 오버플로우가 되지 않는다. 오버플로우가 될 만한 상황이면 에러를 뱉어낸다. 산술 연산에서의 오버플로우를 굳이 사용하고 싶다면 Swift의 산술 연산자 second set을 사용하도록 하자. 기본 산술 연산자 앞에 & 기호를 붙이는 방식인데, 예를들어 덧셈에서의 오버플로우를 허용하고 싶다면 &+ 연산자 (overflow addition operator 라고 부..
Apple 제공 Swift 프로그래밍 가이드(3.1)의 Access Control 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며Access control 을 이용하면 다른 소스파일/모듈에 있는 코드에서 자신의 코드에 접근하는 범위를 제한할 수 있다. 자신의 코드 구현부를 숨기거나, 외부에서 사용할 인터페이스를 확실하게 지정하고 싶을 때 유용하다.Access level 을 클래스, 구조체, ENUM 등의 타입에 각각 구체적으로 지정할 수 있으며, 타입 안에 속한 프로퍼티, 메서드, 이니셜라이저, 서브스크립트에까지도 지정할 수 있다. 프로토콜은 특정 컨텍스트(전역 상수, 변수, 함수 등)로 제한될 수 있다.Default access level이 제공된다. 따라서 만약 단일 ..
Apple 제공 Swift 프로그래밍 가이드(3.0.1)의 Generics 부분을 공부하며 정리한 글입니다. 개인적인 생각도 조금 들어가있습니다. 들어가며제네릭을 이용하면 특정 타입에 종속되지 않는 / 유연하고 / 재사용성 높고 / 명확한 의도를 가진 함수를 작성할 수 있다.제네릭은 Swift의 powerful feature대부분의 Swift 기본 라이브러리는 제네릭 코드를 내장한다사실 Array와 Dictionary 타입도 제네릭 콜렉션Array에는 Int도, String도, 커스텀 타입도, 그리고 이것들을 전부 포함할 수 있는 Any 타입도 넣을 수 있다. 넣을 수 있는 타입에는 제한이 없다. Array가 제네릭 콜렉션이기 때문에 이런 게 가능한 것이다. 제네릭으로 해결할 수 있는 문제The Prob..