본문 바로가기

전체 글97

아이폰 ECommerce+SNS 앱 목요스터디세미나 2주차 2주차 8/23약추 : 함수 작명을 잘 해야 한다.1주차 과제리뷰signIn() 아래에 화면전환 코드가 실행이 안됨우선순위가 엉망으로 꼬여서 signIn() 아랫 줄의 퍼폼세그(화면전환)가 안된 것이다.오늘 세미나중 주요핵심1 : 브레이크포인트를 잘써야한다.오늘 세미나중 주요핵심2 : ‘시퀀스’현업기획서 예시짜증나는 기획서 : 사용자 설명서처럼 화면캡처 많이 해서 앱의 흐름을 소비자에게 설명하듯이 만듦. 화면해설으로만 100% 채움.조금 괜찮은 기획서 : 시퀀스 순서도로 개발할 내용을 잘 알 수 있게 함플로우와 시퀀스 : 화면의 흐름은 플로우, 기능의 시작부터 끝까지는 시퀀스, 플로우는 화면 하나 정도로 큰 의미이다. 시퀀스는 그 보다 훨씬 작다.갯수 : 화면 < 기능 < 시퀀스 < 함수화면만 보여주는 .. 2018. 8. 24.
사당 1차 iOS 개발 스터디 종료 스위프트 프로그래밍(2판) - 야곰 지음 링크PART I 스위프트 기초 1주차 X CHAPTER 1 스위프트CHAPTER 2 스위프트 처음 시작하기CHAPTER 3 데이터 타입 기본CHAPTER 4 데이터 타입 고급CHAPTER 5 연산자CHAPTER 6 흐름 제어7/12 김OOCHAPTER 7 함수 CHAPTER 8 옵셔널 PART II 객체지향 프로그래밍과 스위프트 2주차 7/18 장OOCHAPTER 9 구조체와 클래스 CHAPTER 10 프로퍼티와 메서드 7/19 김OOCHAPTER 11 인스턴스 생성 및 소멸 CHAPTER 12 접근제어 PART III 함수형 프로그래밍과 스위프트 3주차 7/25 서OOCHAPTER 13 클로저 7/26 서OOCHAPTER 14 옵셔널 체이닝과 빠른종료 CHAPT.. 2018. 8. 23.
Hourglass(모래시계) iOS 앱 개발기 - 아이디어 맨 처음 아이디어가 떠오른건 1년정도 된 것 같다. 그 때가 무직에 독학을 시작했을 때라 처음에는 시간관리가 많이 안 됐었다. 아무리 하루하루를 알차게 보내려고 계획해봐도 실패하기 일쑤였다. (매일 이런기분 이었다;;;;) 처음엔 내가 게으른건가 하는 생각을 많이 했지만 나중에 알게 됐다. 나뿐 아니라 누구나 비슷한 것이고 시간을 보내는 방법이 참 중요하다는 걸. 그때 당시 자기계발서로 시간관리를 잘하는 법에 대한 책을 살짝 읽어 봤고 여기서 이 앱에 대한 아이디어를 얻게 됐다. 책에서는 '시간추정'이라고 해서 시간관리를 하는 노하우를 알려주는데 매일 따라하다 보면 시간관리를 잘 할 수 있게 된다고 했다. 한두번 따라해보니까 확실히 내가 시간을 많이 낭비하고 있고 어떠한 일을 할때 예상보다 더 많은 시간.. 2018. 8. 17.
아이폰 ECommerce+SNS 앱 목요스터디세미나 1주차 어제 목요일 청담역 주변 작은 오피스텔에서 첫 스터디가 진행됐다. 주로 앞으로의 진행 방식에 대한 오티가 있었고 기본기에 해당하는 개념적인 내용을 많이 알게 되었다. 내용을 요약하면 IDE란 무엇인가? IDE만 잘 다루어도 뛰어난 프로그래머가 될 수 있다. 프로그래머가 하는 일은 무엇인가? cpu가 실행할 작업의 목록을 만들고 우선순위를 정하는 일을 하는 사람. Library와 Framework의 차이 라이브러리는 기능을 적용하기위한 외부 파일 묶음. 프레임웍은 그런 라이브러리들을 모아서 만든 작업환경으로서 내부 구조를 알지 못해도 가져다 적용하는 것 만으로 매우 쉽게 동작이 가능하다. 함수형 프로그래밍이란? 스위프트에서 함수형/프로토콜 프로그래밍 기법은 실무에서 크게 쓰이지 않는다 스위프트는 기존 언어.. 2018. 8. 17.
사당 iOS 스터디 5주차 - 오류처리 CHAPTER 28 오류처리__28.1 오류처리란스위프트의 오류처리 기능을 통해 시스템(예를 들어 운영체제 등 우리가 작성하는 응용프로그램 외부)에서 발생한 오류를 처리할 수 있는 것이 아님을 명심__28.2 오류의 표현스위프트에서 오류(Error)는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현오류의 종류를 미리 예상한 다음, 오류 때문에 다음에 행할 동작이 정상적으로 진행되지 않을 때라면 오류를 던져(Throw Error)주면 됩니다.스위프트에서 오류를 처리하기 위한 네 가지 방법함수에서 발생한 오류를 해당 함수를 호출한 코드에 알리는 방법 do-catch 구문을 이용하여 오류를 처리하는 방법 옵셔널 값으로 오류를 처리하는 방법 오류가 발생하지 않을 것이라고 확신하는 방법 __28.3 오류.. 2018. 8. 17.
사당 iOS 스터디 5주차 - ARC CHAPTER 27 ARC__27.1 ARC란ARC는 더 이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작가비지 컬렉션 기법과의 차이가장 큰 차이는 참조를 계산(count)하는 시점 ARC 참조 카운팅 시점 컴파일 시 장점 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있어서 인스턴스가 언제 메모리에서 해제될지 예측할 수 있습니다. 컴파일 당시 이미 인스턴스의 해제 시점이 정해져 있어서 메모리 관리를 위한 시스템 자원을 추가할 필요가 없습니다. 단점 ARC의 작동 규칙을 모르고 사용하면 인스턴스가 메모리에서 영원히 해제되지 않을 가능성이 있습니다. 가비지 컬렉션 참조 카운팅 시점 프로그램 동작 중 장점 상호 참조 상황 등의 복잡한 상황에서도 인스턴스를 해제할 수 있는 가능성이 더.. 2018. 8. 17.
사당 iOS 스터디 5주차 - 프로토콜 지향 프로그래밍 CHAPTER 23 프로토콜 지향 프로그래밍__23.1 프로토콜 초기구현프로토콜과 익스텐션을 결합하면 코드의 재사용성이 월등히 증가프로토콜의 요구사항을 익스텐션을 통해 구현하는 것을 프로토콜 초기구현(Protocol Default Implementations)익스텐션을 통해 구현된 메서드 재정의특정 프로토콜을 준수하는 타입에 프로토콜의 요구사항을 찾아보고 이미 구현되어 있다면 그 기능을 호출하고, 그렇지 않다면 프로토콜 초기구현의 기능을 호출 제네릭, 프로토콜, 익스텐션을 통한 재사용 가능한 코드 작성스위프트의 클래스는 다중상속을 지원하지 않으므로 부모클래스의 기능으로 부족하다면 자식클래스에서 다시 구현해야 하지만, 프로토콜 초기구현을 한 프로토콜을 채택했다면 상속도 추가 구현도 필요 없습니다. 상속을 .. 2018. 8. 17.
사당 iOS 스터디 5주차 - 제네릭 CHAPTER 22 제네릭제네릭을 사용하고자 하는 타입 이름 제네릭을 사용하고자 하는 함수 이름 (함수의 매개변수...) 타입마다 다른 함수를 쓰지 않으려면 Any타입을 사용하면 되지 않을까?Any타입의 두 변수에 어떤 타입의 값이 들어있을지 모릅니다. Int면 Int끼리, String이면 String끼리 교환하고 싶은데, 그런 제한을 줄 수 없는 것다른 타입인 String 타입의 변수(stringOne, stringTwo)를 전달인자로 전달할 수가 없습니다.__22.1 제네릭 함수제네릭 함수는 실제 타입 이름(Int, String 등)을 써주는 대신에 플레이스홀더를 사용타입 매개변수플레이스홀더 타입의 이름을 지정하고 명시하는 역할을 하며, 함수의 이름 뒤 홀화살괄호 기호() 안쪽에 위치 함수의 매개변수.. 2018. 8. 17.
사당 iOS 스터디 5주차 - 익스텐션 CHAPTER 21 익스텐션__21.1 익스텐션이란익스텐션은 스위프트의 강력한 기능 중 하나로 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가기능을 추가하려는 타입을 구현한 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 안다면 그 타입의 기능을 확장할 수도 있습니다.스위프트의 익스텐션은 이름이 없습니다.스위프트의 익스텐션이 타입에 추가할 수 있는 기능연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티 타입 메서드 / 인스턴스 메서드 이니셜라이저 서브스크립트 중첩 타입 특정 프로토콜을 준수할 수 있도록 기능 추가 익스텐션은 타입에 새로운 기능을 추가할 수는 있지만, 기존에 존재하는 기능을 재정의할 수는 없습니다.상속과 익스텐션 비교상속 확장 수직 확장 사용 클래스 타입에서만 사용 재정의 재.. 2018. 8. 17.
사당 iOS 스터디 4주차 - 프로토콜 CHAPTER 20 프로토콜__20.1 프로토콜이란프로토콜은 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의어떤 프로토콜의 요구사항을 모두 따르는 타입은 ’해당 프로토콜을 준수한다’고 표현프로토콜은 정의를 하고 제시를 할 뿐이지 스스로 기능을 구현하지는 않습니다.__20.2 프로토콜 정의__20.3 프로토콜 요구사항프로토콜은 타입이 특정 기능을 실행하기 위해 필요한 기능을 요구합니다. 프로토콜이 자신을 채택한 타입에 요구하는 사항은 프로퍼티나 메서드와 같은 기능들20.3.1 프로퍼티 요구프로토콜을 채택한 타입은 프로토콜이 요구하는 프로퍼티의 이름과 타입만 맞도록 구현해주면 됩니다. 프로퍼티를 읽기 전용으로 할지 혹은 읽고 쓰기가 모두 가능하게 할지는 프로토콜이 정해야 합니다... 2018. 8. 17.
사당 iOS 스터디 4주차 - 타입캐스팅 CHAPTER 19 타입캐스팅스위프트는 데이터 타입 안전을 위하여 각기 다른 타입끼리의 값 교환을 엄격히 제한암시적 데이터 타입 변환(Implicit Type Conversion)은 지원하지 않습니다.__19.1 기존 언어의 타입 변환과 스위프트의 타입 변환__19.2 스위프트 타입캐스팅스위프트에서는 다른 언어의 타입 변환 혹은 타입캐스팅을 이니셜라이저로 단순화스위프트 타입캐스팅은 인스턴스의 타입을 확인하거나 자신을 다른 타입의 인스턴스인양 행세할 수 있는 방법으로 사용할 수 있습니다.값의 타입을 확인하거나 다른 타입으로 전환타입캐스팅을 통해 프로토콜을 준수하는지도 확인스위프트와 타입캐스팅은 실제로 참조 타입에서 주로 사용Coffee는 Latte나 Americano인 척할 수 없지만, Latte나 Ame.. 2018. 8. 17.
사당 iOS 스터디 4주차 - 상속 CHAPTER 18 상속상속은 스위프트의 다른 타입과 클래스를 구별 짓는 클래스만의 특징다른 클래스로부터 상속을 받지 않은 클래스를 기반클래스(Base class)__18.1 클래스 상속__18.2 재정의자식클래스는 부모클래스로부터 물려받은 특성(인스턴스 메서드, 타입 메서드, 인스턴스 프로퍼티, 타입 프로퍼티, 서브스크립트 등)을 그대로 사용하지 않고 자신만의 기능으로 변경하여 사용부모클래스의 특성을 자식클래스에서 사용하고 싶다면 super 프로퍼티를 사용super 키워드를 타입 메서드 내에서 사용한다면, 부모클래스의 인스턴스 메서드와 인스턴스 프로퍼티, 서브스크립트에 접근18.2.1 메서드 재정의스위프트는 메서드의 반환 타입이나 매개변수가 다르면 서로 다른 메서드로 취급 18.2.2 프로퍼티 재정의프.. 2018. 8. 17.
사당 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.
성공적인 스터디 만들기 성공적인 스터디 만들기 목표 설정두루뭉술 원대한 목표가 아니라 명확하고 실현 가능한 현실적인 목표스터디 시간 동안 어느 정도의 양을 얼마큼 진행할지 분명하게 세우는 것이 중요스터디 구성원모집모집 공고는 되도록 구체적으로 쓰는 게 좋다. 공부하고자 하는 내용, 공부 기간, 선발 인원, 기타 규칙 등을 자세하게 밝혀 차후에 문제가 없도록 해야 한다. example 은행 공채 대비 ‘필승 스터디’ 안녕하세요? ^-^ 한국대 경제학과 4학년에 재학 중인 여학생 한경이입니다. 2011년 하반기 은행 공채를 대비해 9·10·11월 석 달 동안 필기시험 및 면접 준비를 함께 할 분을 모집합니다. 성비를 맞추기 위해 남자 3명, 여자 2명을 선발할 계획입니다. 목요일 오후 6시까지 지원받겠습니다. OOOO@hankyu.. 2018. 8. 17.
사당 iOS 스터디 2주차 - 프로퍼티와 메소드 __10.1 프로퍼티10.1.1 저장 프로퍼티클래스 또는 구조체의 인스턴스와 연관된 값을 저장하는 가장 단순한 개념의 프로퍼티 클래스의 저장 프로퍼티는 옵셔널이 아니라면 프로퍼티 기본값을 지정해주거나 사용자정의 이니셜라이저를 통해 반드시 초기화 클래스 인스턴스의 상수 프로퍼티는 인스턴스가 초기화(이니셜라이즈)될 때 한 번만 값을 할당 프로퍼티 기본값을 지정해주지 않는다면 이니셜라이저를 따로 정의해주어야 합니다. 저장 프로퍼티의 초깃값 지정 구조체는 프로퍼티에 맞는 이니셜라이저를 자동으로 제공 클래스의 저장 프로퍼티에 초깃값을 지정해주면 따로 사용자정의 이니셜라이저를 구현해줄 필요가 없습니다. 옵셔널 저장 프로퍼티 인스턴스를 생성할 때 이니셜라이저를 통해 초깃값을 보내야 하는 이유는 프로퍼티가 옵셔널이 아.. 2018. 7. 24.