본문 바로가기

스터디25

아이폰 ECommerce+SNS 앱 목요스터디세미나 5주차 5주차 9/13프레임워크를 가져다 쓸 때의 단계설정 맞추기중개 관리자 객체를 잡아주어야 한다.중간 관리자의 인터페이스를 열어서 사용한다.과제지난 과제 완성파베 스토리지 써서 프로필사진 앨범에서 가져오기카메라로 직접 찍어서 프로필 올리기 기능 추가OO씨 과제 : FSCalendar-master (swift 달력 라이브러리) 2018. 9. 14.
아이폰 ECommerce+SNS 앱 목요스터디세미나 4주차 4주차 9/6오늘 세미나중 주요핵심 : 잘나가는 프레임워크인 파이어베이스의 문제점프로그래머를 바보로 만든다.수정하기가 힘들다.속도나 자원에서의 손해가 심하다.중요한 것과 중요하지 않은 것의 구별이 힘들다.파이어베이스는 서버설계, 디비설계에 대한 고민을 필요없는 것처럼 보이게 한다.하지만 꼭 필요하다.앱설계자원낭비가 심해도 실시간 응답대기가 필요한 부분에는 그렇게하고 아닌 부분은 일회성 불러오기를 한다.통신설계데이터를 불러오는 타이밍을 잘 생각해야 한다.엔진내가 직접 만든 라이브러리이며 프레임워크처럼 쉽게 갖다 쓸 수 있다.프레임워크의 단점 4가지가 전부 없다.자기가 만든 것이기 때문에자원 최소화, 속도 빠르게 할 수 있게 해준다.과제10분이상 우리의 목표와 관련된 고민을 하고 와서 그에 대한 이야기를 하.. 2018. 9. 7.
아이폰 ECommerce+SNS 앱 목요스터디세미나 3주차 3주차 8/30팁과제를 작게 쪼개라단순명확한 주제를 잡아라시퀀스를 고민한 후에 시작해야 함.ios 뷰컨트롤러 == android xmlios 스토리보드 == android xml 다모아놓은 것안드로이드는 자바(상속이나 클래스나 비동기를 매우 많이 씀)에 웹스러운 xml화면구성을 합한 코딩 스타일이다.아이폰은 쓰레드를 많이 쓰지 않음. 멀티 쓰레드 작업은 아이폰 앱에는 부하가 큰 작업.언어선택objc는 당분간 X첫 뷰인 로그인뷰는 항상 바닥에 남기고 그 위에 뷰를 올리고 바꿔치기한다위기관리차원아이폰은 앱댈리게이트가 화면을 넘기고 안드로이드는 그렇지않고 상위뷰가 직접 한다.앞으로 정공법으로 아이폰 만의 개발 방식을 프레임워크 스럽지 않은 방식을 배울 것이다.대부분의 앱이 첫 로그인뷰와 그다음 메인뷰를 남겨놓.. 2018. 8. 31.
아이폰 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.
아이폰 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.