[Swift] 부스트코스 스위프트 기초 강의 수료 👏👏👏
2020. 12. 7. 21:49
iOS/Swift
드디어 edwith 에서 무료로 강의해주는 iOS 스위프트 기초 강의를 마쳤다. 아래는 강의를 모두 들었다는 내용 ! 10월 8일부터 듣기 시작해서 12월 7일날 완강했다. 그리고 너무 받고 싶었던 수료증 !!!!!!! 😆 박수 👏👏👏👏👏👏👏👏👏👏👏
[Swift] 추가적으로 공부해야할 것들 정리
2020. 12. 7. 21:34
iOS/Swift
부스트코스에서 스위프트 기초 강의를 통해 스위프트를 공부하고 있는 중이다.추가적으로 스위프트에 대한 기본적인 문법에 대해서 마무리하고 이후 공부해야할 내용을 알려주셨다.추가적으로 공부하는 것도 중요하지만 그동안 배웠던 것들도 다시 한 번 보면서 이해해야 겠다.제네릭 서브 스크립트 접근 수준 ARC 중첩 타입 사용자 정의 연산자 오류 처리 불명확 타입 프로토콜 지향 프로그래밍등등...
[Swift] 29. 모나드(Monad), 함수객체(Functor), 컨텍스트(Context)
2020. 12. 7. 21:30
iOS/Swift
모나드에 대해서 공부하기 전에 몇가지 개념에 대해 짚고 넘어가야 한다. 사실 잘 이해가 되지 않았고 지금도 잘 이해하고 있다고 생각하지 않는다. 하지만 정말 너무 잘 설명되어있는 글을 통해 조금 더 이해할 수 있었던 것 같다. (아래 사이트 참고!) 우선, 모나드가 갖춰야 하는 조건이 있다. 타입을 인자로 받는 타입 (특정 타입의 값을 포장) 특정 타입의 값을 포장한 것을 반환하는 함수가 존재 포장된 값을 변환하여 같은 형태로 포장하는 함수가 존재 컨텍스트 (Context) 컨텍스트는 컨텐츠를 담은 그 무언가, 어떤 위치에 값이 존재할 수 있는 맥락 이라고 말한다. 예를 들어 설명하자면 물이 담겨있는 물컵을 생각했을 때 물 : 컨텐츠 물컵 : 컨텍스트 라고 생각하면 된다. 옵셔널에 대해서 공부했을 때를 ..
[Swift] 28. 고차 함수 (map, filter, reduce)
2020. 12. 7. 20:33
iOS/Swift
고차 함수 | Higher-order function 고차 함수는 다른 함수를 전달인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수 를 뜻한다. 스위프트의 함수(클로저)는 일급시민(일급객체)이기 때문에 함수의 전달인자로 전달할 수 있고 함수의 결과 값으로 반환할 수 있다. 스위프트에서 제공하는 map, filter, reduce 고차 함수가 있고 컨테이너 타입(Array, Set, Dictionary 등) 에 구현되어 있다. map : 변형 map 함수는 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 생성한다. for 구문과 비슷하게 사용할 수 있지만 map 을 사용하게 되면 클로저 상수를 통해 코드의 재사용이 용이해지고 컴파일러 최적화 측면에서 성능이 좋아진다. 다음 예를 통해 확인해보..
[Swift] 27. 오류 처리
2020. 12. 4. 17:27
iOS/Swift
스위프트에서 오류는 Error 라는 프로토콜을 준수하는 타입의 값을 통해 표현된다. Error 프로토콜은 사실상 요구사항이 없는 빈 프로토콜일 뿐이지만, 오류를 포현하기 위한 타입(주로 열거형)은 이 프로토콜을 채택한다. 스위프트의 열거형은 오류의 종류를 나타내기에 아주 적합한 기능이다. 연관 값을 통해 오류에 관한 부가 정보를 제공할 수도 있다. 프로그램 내에서 자판기를 작동시키려고 할 때 발생하는 오류상황을 구현해보았다. 오류 표현하기 Error 프로토콜과 주로 열거형을 통해서 오류를 표현한다. // 자판이 동작 오류의 종류를 표현한 열거형 enum VendingMachineError: Error { case invalidInput case insufficientFunds(moneyNeeded: In..
[Swift] 26. 익스텐션 (extension)
2020. 12. 3. 19:56
iOS/Swift
익스텐션 (extension) 익스텐션은 스위프트의 강력한 기능 중 하나다. 익스텐션은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능이다. 기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 알고 있다면 그 타입의 기능을 확장할 수 있다. 스위프트의 익스텐션이 타입에 추가할 수 있는 기능 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 타입 메서드 / 인스턴스 메서드 이니셜라이저 서브스크립트 중첩 타입 특정 프로토콜을 준수할 수 있도록 기능 추가 ‼️ 익스텐션은 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의할 수는 없다. 클래스의 상속과 익스텐션의 비교 클래스의 상속 클래스 타입에서만 가능하다. 특정 타입을 물려받..
[Swift] 25. 델리게이션(delegation), 델리게이트 패턴 공부
2020. 12. 3. 19:23
iOS/Swift
델리게이션은 사전상 의미로 대표자, 위임하다, 대리자 라고 해석할 수 있다. 클래스나 구조체가 따로 혹은 일부 수행해야 하는 일을 다른 타입의 인스턴스에게 위임하는 디자인 패턴이다. 특정 액션에 반응하거나 외부 소스의 기본 타입을 알 필요 없이 외부 소스로부터 데이터를 가져오는데 사용될 수 있다. 간단하게 말해서, A 인스턴스가 하나의 일에만 충실하고 싶을 때, 그 밖의 일들을 B 인스턴스가 대신해서 처리해준다는 것이다. 스위스트에서는 이런 델리게이션의 개념이 적용된 것이 프로토콜이다. 프로토콜은 이전에 공부했듯이 특정 역할을 수행하기 위한 프로퍼티, 메서드, 이니셜라이저 등의 청사진을 정의한다고 알고 있다. 델리게이트는 대신 처리해줄 객체와 처리하라고 시키는 객체로 구분해서 생각하면 된다. 그래서 델리..
[Swift] 24. 프로토콜 (protocol)
2020. 12. 3. 17:29
iOS/Swift
프로토콜 (Protocol) 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 구조체, 클래스, 열거형은 프로토콜을 채택 해서 특정 기능을 수행하기 위한 프고토콜의 요구사항을 실제로 구현할 수 있다. 어떤 프로토콜의 요구사항을 모두 따르는 타입은 그 프로토콜을 준수한다 라고 표현한다. 타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야 한다. 즉, 프로토콜은 기능을 정의하고 제시할 뿐, 스스로 기능을 구현하지 않는다. 프로토콜 정의 프로토콜은 다음과 같이 protocol 키워드를 사용해서 정의할 수 있다. protocol 프로토콜 이름 { /* 프로토콜 정의 */ } 그리고 다음과 같이 프로퍼티, 메서드, 이니셜라이저..