본문 바로가기

Languages/Swift31

사당 iOS 스터디 3주차 - 모나드 CHAPTER 16 모나드모나드는 특정한 상태로 값을 포장하는 것에서 출발함수객체와 모나드는 특정 기능이 아닌 디자인 패턴 혹은 자료구조라고 할 수 있습니다.__16.1 컨텍스트‘콘텐츠’를 담은 그 무엇인가’를 뜻합니다.옵셔널은 some과 none이라는 두 가지의 컨텍스트를 갖습니다.__16.2 함수객체옵셔널은 컨테이너(컨텍스트가 일종의 컨테이너 역할을 합니다)와 값을 갖기 때문에 맵 함수를 사용할 수 있습니다.‘함수객체란 맵을 적용할 수 있는 컨테이너 타입’Array, Dictionary, Set 등등 스위프트의 많은 컬렉션 타입이 함수객체옵셔널 map 메서드 구현Optional(2).map(addThree) Optional.none.map(addThree) __16.3 모나드모나드는 함수객체의 일종으.. 2018. 8. 17.
사당 iOS 스터디 3주차 - 맵, 필터, 리듀스 CHAPTER 15 맵, 필터, 리듀스__15.1 맵맵은 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수스위프트에서 맵은 배열, 딕셔너리, 세트, 옵셔널 등에서 사용스위프트의 Sequence, Collection 프로토콜을 따르는 타입과 옵셔널은 모두 맵을 사용맵을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수를 통해 받은 함수에 적용한 후 다시 컨테이너에 포장하여 반환기존 컨테이너의 값은 변경되지 않고 새로운 컨테이너가 생성되어 반환맵은 기존 데이터를 변형하는 데 많이 사용__15.2 필터필터는 말 그대로 컨테이너 내부의 값을 걸러서 추출하는 역할을 하는 고차함수filter 함수의 매개변수로 전달되는 함수의 반환 타입은 Bool__15.3 리듀스리듀스는 컨테이너.. 2018. 8. 17.
사당 iOS 스터디 3주차 - 옵셔널 체이닝과 빠른종료 CHAPTER 14 옵셔널 체이닝과 빠른종료__14.1 옵셔널 체이닝옵셔널에 속해 있는 nil일지도 모르는 프로퍼티, 메서드, 서브스크립션 등을 가져오거나 호출할 때 사용할 수 있는 일련의 과정옵셔널에 값이 있다면 프로퍼티, 메서드, 서브스크립트 등을 호출할 수 있고, 옵셔널이 nil이라면 nil을 반환중첩된 옵셔널 중 하나라도 값이 존재하지 않는다면 결과적으로 nil을 반환결과적으로 nil이 반환될 가능성이 있으므로 옵셔널 체이닝의 반환된 값은 항상 옵셔널느낌표(!)값을 강제 추출하기 때문에 옵셔널에 값이 없다면 런타임 오류가 발생 옵셔널에서 값을 강제 추출해 반환하기 때문에 반환 값이 옵셔널이 아니라는 점 옵셔널 체이닝의 결괏값은 옵셔널 값이기 때문에 옵셔널 바인딩과 결합할 수 있는 것옵셔널 체이닝을.. 2018. 8. 17.
사당 iOS 스터디 3주차 - 클로저 CHAPTER 13 클로저클로저는 변수나 상수가 선언된 위치에서 참조를 획득하고 저장할 수 있습니다.클로저의 몇 가지 모양 중 하나가 함수클로저의 세 가지 형태이름이 있으면서 어떤 값도 획득하지 않는 전역함수의 형태이름이 있으면서 다른 함수 내부의 값을 획득할 수 있는 중첩된 함수의 형태이름이 없고 주변 문맥에 따라 값을 획득할 수 있는 축약 문법으로 작성한 형태클로저의 다양한 표현클로저는 매개변수와 반환 값의 타입을 문맥을 통해 유추할 수 있기 때문에 매개변수와 반환 값의 타입을 생략할 수 있습니다.클로저에 단 한 줄의 표현만 들어있다면 암시적으로 이를 반환 값으로 취급합니다.축약된 전달인자 이름을 사용할 수 있습니다.후행 클로저 문법을 사용할 수 있습니다.클로저 표현 방법은 클로저가 함수의 모습이 아.. 2018. 8. 17.
사당 iOS 스터디 2주차 - 접근제어 CHAPTER 12 접근제어__12.1 접근제어란접근제어를 통해 코드의 상세 구현은 숨기고 허용된 기능만 사용하는 인터페이스를 제공12.1.1 접근제어의 필요성12.1.2 모듈과 소스파일모듈 모듈은 배포할 코드의 묶음 단위 하나의 프레임워크나 라이브러리 또는 애플리케이션이 모듈 단뒤 import 키워드를 사용 소스파일 소스파일 하나에 여러 타입(여러 개의 클래스나 구조체, 열거형 등)이나 함수 등 많은 것을 정의하거나 구현할 수도 있습니다. __12.2 접근수준각 타입(클래스, 구조체, 열거형 등)에 특정 접근수준을 지정타입 내부의 프로퍼티, 메서드, 이니셜라이저, 서브스크립트 각각에도 접근수준을 지정…12.2.1 공개 접근수준, public자신이 구현된 소스파일은 물론, 그 소스파일이 속해 있는 모듈,.. 2018. 8. 17.
사당 iOS 스터디 2주차 - 인스턴스 생성 및 소멸 CHAPTER 11 인스턴스 생성 및 소멸__11.1 인스턴스 생성스위프트의 이니셜라이저는 반환 값이 없습니다.클래스의 지정 이니셜라이저는 익스텐션에서 구현해줄 수 없습니다.11.1.1 프로퍼티 기본값구조체와 클래스의 인스턴스는 처음 생성할 때 옵셔널 저장 프로퍼티를 제외한 모든 저장 프로퍼티에 적절한 초깃값을 할당해야 합니다. 초기화 후에 값이 확정되지 않은 저장 프로퍼티는 존재할 수 없습니다. 초기화와 프로퍼티 감시자 이니셜라이저를 통해 초깃값을 할당하거나, 프로퍼티 기본값을 통해 처음의 저장 프로퍼티가 초기화될 때는 프로퍼티 감시자 메서드가 호출되지 않습니다. 11.1.2 이니셜라이저 매개변수11.1.3 옵셔널 프로퍼티 타입인스턴스가 사용되는 동안에 값을 꼭 갖지 않아도 되는 저장 프로퍼티가 있다면.. 2018. 8. 17.
사당 iOS 스터디 2주차 - 프로퍼티와 메소드 __10.1 프로퍼티10.1.1 저장 프로퍼티클래스 또는 구조체의 인스턴스와 연관된 값을 저장하는 가장 단순한 개념의 프로퍼티 클래스의 저장 프로퍼티는 옵셔널이 아니라면 프로퍼티 기본값을 지정해주거나 사용자정의 이니셜라이저를 통해 반드시 초기화 클래스 인스턴스의 상수 프로퍼티는 인스턴스가 초기화(이니셜라이즈)될 때 한 번만 값을 할당 프로퍼티 기본값을 지정해주지 않는다면 이니셜라이저를 따로 정의해주어야 합니다. 저장 프로퍼티의 초깃값 지정 구조체는 프로퍼티에 맞는 이니셜라이저를 자동으로 제공 클래스의 저장 프로퍼티에 초깃값을 지정해주면 따로 사용자정의 이니셜라이저를 구현해줄 필요가 없습니다. 옵셔널 저장 프로퍼티 인스턴스를 생성할 때 이니셜라이저를 통해 초깃값을 보내야 하는 이유는 프로퍼티가 옵셔널이 아.. 2018. 7. 24.
사당 iOS 스터디 2주차 - 구조체와 클래스 구조체와 클래스는 프로그래머가 데이터를 용도에 맞게 묶어 표현하고자 할 때 유용구조체의 인스턴스는 값 타입이고, 클래스의 인스턴스는 참조 타입스위프트의 데이터 타입과 열거형은 모두 값 타입소스파일 하나에 여러 개의 구조체와 여러 개의 클래스를 정의하고 구현해도 문제가 없습니다.구조체 안에 구조체, 클래스 안에 클래스 등과 같이 중첩 타입의 정의 및 선언이 가능__9.1 구조체9.1.1 구조체 정의구조체를 정의한다는 것은 새로운 타입을 생성해주는 것과 마찬가지 대문자 카멜케이스를 사용하여 이름을 지어줍니다. 9.1.2 구조체 인스턴스의 생성 및 초기화구조체에 기본 생성된 이니셜라이저의 매개변수는 구조체의 프로퍼티 이름으로 자동 지정 인스턴스가 생성되고 초기화된 후 프로퍼티 값에 접근하고 싶다면 마침표(.).. 2018. 7. 23.
사당 iOS 스터디 1주차 - 옵셔널 스위프트의 특징 중 하나인 안전성(safe)을 문법으로 담보하는 기능‘변수나 상수 등에 꼭 값이 있다는 것을 보장할 수 없다. 즉, 변수 또는 상수의 값이 nil일 수도 있다’는 것을 의미__8.1 옵셔널 사용변수 또는 상수에 정말 값이 없을 때만 nil로 표현오류가 발생하는 nil 할당값이 없는 옵셔널 변수 또는 상수에 (강제로) 접근하려면 런타임 오류가 발생합니다. 그렇게 되면 OS가 프로그램을 강제 종료시킬 확룰이 매우 높습니다. 옵셔널 변수의 선언 및 nil 할당옵셔널 변수 또는 상수 등은 데이터 타입 뒤에 물음표(?)를 붙여 표현 __8.2 옵셔널 추출8.2.1 강제 추출런타임 오류의 가능성을 항상 내포하기 때문에 옵셔널 강제 추출(Forced Unwrapping) 방식은 사용하는 것을 지양 8.. 2018. 7. 23.
사당 iOS 스터디 1주차 - 함수 __7.1 함수와 메서드구조체, 클래스, 열거형 등 특정 타입에 연관되어 사용하는 함수를 메서드모듈 전체에서 전역적으로 사용할 수 있는 함수를 그냥 함수__7.2 함수의 정의와 호출스위프트의 함수는 재정의(오버라이드)와 중복 정의(오버로드)를 모두 지원7.2.1 기본적인 함수의 정의와 호출매개변수 함수를 정의할 때 외부로부터 받아들이는 전달 값의 이름 예 hello(name: “Jenny”) 전달인자 전달인자(Argument), 혹은 인자는 함수를 실제로 호출할 때 전달하는 값 예 hello(name: “Jenny”) 7.2.2 매개변수함수를 호출할 때, 매개변수 이름을 붙여주고 콜론(:)을 적어준 후 전달인자를 보내준다 매개변수 이름과 전달인자 레이블 매개변수 이름(Parameter Name) 호출 시.. 2018. 7. 23.
사당 iOS 개발 스터디 모집합니다. [1차 마감] 안녕하세요 :)iOS는 웹개발과 달리 혼자서 배우기가 참 힘든것 같습니다.그래서 스터디인원을 모집해서 함께 iOS 개발을 배우고자 합니다.Objective-C와 Swift의 문법을 우선 배우고 Swift의 각종 라이브러리를 익힐 생각입니다.이후 고급과정은 스터디 진행하면서 가닥을 잡아서 커리큘럼에 추가할거고요.또한 각종 정보공유와 기타 개발관련 지식향상도 할 수 있었으면 합니다!자세한 계획은 첨부된 사진을 봐주세요.참여를 원하시는 분께서는 카카오톡 계정 wer0222 로 이름, 거주지, 직업, 기술수준을 알려주세요!!!!시간, 장소, 스터디 진행 방식 등은 상의를 통해 조정될 수 있는 부분입니다.많은 참여 기다리겠습니다!!! 부담없이 연락주세요 ^ ㅡ ^ ( 1차 마감되었습니다. 2차는 10월 계획중입니.. 2018. 7. 4.