코드 리뷰 방법, 함수의 의미 단위 분할, String Interpolation, Optional, Optional Binding, Optional Chaining, Unconditional Unwrapping, 문제점 및 해결 방법
Version Control System (VCS), Git, GitHub, Local/Remote Workflow, 프로젝트 시 Git과 GitHub의 활용, 충돌 및 충돌 해결
함수(메서드)의 단위, 코드리뷰, 야곰의 TechCast, 코딩테스트
CS 기초 지식, 컴퓨터의 역사, 구성, 구조, 데이터의 표현 방식, 연산, 모두를 위한 컴퓨터 과학 (CS50)
주석의 사용, Optional 활동 학습, 모둠원과 숫자야구게임 Step 2 상호 코드 리뷰, 병합 및 PR, 회고 3종 (일일, 주간, 프로젝트)
Git, GitHub, PR, CS (컴퓨터의 역사, 구성, 구조, 연산, 데이터의 표현 방식 등), Optional
Swift, 타입, 추상화, 은닉화, 캡슐화, 접근 제어, 접근 수준, 읽기 전용 접근 제어
프로토콜, 익스텐션, 익세텐션을 통한 프로토콜의 구현, 의사코드 활용이 주는 편익
Human Interface Guidelines for iOS, 내가 얼마나 발전했는지 알아보려면?, CaseIterable 프로토콜, 프로그래머스x최강iOS팀이 만나다!, 개발자의 효율적인 문서 작성법
에러 처리, TWL 및 학습 트리 작성
2주차에는 타입의 일반화, 추상화, 은닉화, 캡슐화, 클래스 구조 설계, enum, CaseIterable, Access Control에 대해 학습하고 다뤄 보았습니다.
Swift 기본 문법 복습, Style Guidelines 자료 탐색
프로그래밍 디자인 패턴, 아키텍처, MVC, 정적웹 및 동적웹을 학습하였고, 코드의 유지보수성을 향상시키는 방법 대해 고민해보았습니다.
class, struct 사용에 대한 개인적인 기준을 세워보았고, 코드 리팩터링에 대해 고민해보았습니다.
타입, 프로퍼티, 메서드를 복습하였고, 학습에 임하는 자세와 JSON 디코딩 시 적용 타입에 대해 고민해보았습니다.
Swift 기초 문법인 옵셔널, 옵셔널 바인딩을 복습 하였으며, 상황별 클래스와 구조체 간 선택에 대해 고민해보았고, JSON 디코딩 시 사용자 정의 타입으로 파싱할 수 없었던 문제를 해결하였습니다.
디버깅 로그 출력 방법에 대해 학습하였으며, 타입 설계 시 수행 기능 범위에 대한 고민해보았고, 진행 중인 프로젝트의 타입별 수행 기능을 재분류하여 코드 리팩터링을 수행하였습니다.
3주차는 구조체와 클래스를 구분하여 사용하고, Codable 프로토콜을 통해 JSON을 디코딩하여 프로젝트에 활용하여 보았으며, 에러 처리와 열거형 활용 방법에 대해 고민해보았습니다.
구조체와 클래스의 이니셜라이저, Notification Center, Key Value Observing (KVO)를 학습하였으며, Stack View를 활용한 UI 요소 배치와 스타일 적용에 대해 고민해보았습니다.
iOS의 View Life Cycle에 대해 학습하고 상황별 적용 방법에 대해 고민해보았습니다.
결합도와 응집도, UML에 대해 학습하였습니다.
Swift의 프로토콜 (Protocols), 익스텐션 (Extensions)과 클로저 (Closures)에 대해 학습했으며, 새로운 지식을 나의 지식으로 만드는 방법에 대한 주제로 Zedd님의 특강을 수강하였습니다.
계산기 프로젝트에 class diagram 초안을 작성하였으며, 제네릭 타입 Stack을 구현해보았고, SOLID에 대해 학습하였습니다. 제네릭 타입을 지원하지 않는 프로토콜에 대해 associatedtype을 활용한 우회 구현 방법을 고민해보았습니다.
진행 중인 프로젝트의 코드를 작성하기 전에 클래스 다이어그램을 작성해보았고, 구조체와 클래스의 인스턴스와 프로퍼티의 선언 방식에 따른 값 변경 가능 여부에 대해 고민해보았습니다.
계산기 프로젝트 수행과 함께 UML, Class Diagram, Protocol, Extension, Closure, Object-Oriented Paradigm (OOP), SOLID에 대해 학습한 한 주 였습니다.
계산기 프로젝트 구현 단계에 진입하여 각 타입별 공통으로 사용되는 프로토콜을 작성하고 초기 구현을 하였습니다. 제네릭 타입 사용 시 정수형 및 부동소수형의 연산을 지원하는 프로토콜인 `Numeric` 프로토콜을 학습하였습니다.
계산기 프로젝트 중 10진 계산기의 구현을 개인적으로 진행해보았고, 연산자의 우선순위를 고려한 실시간 계산 기능을 구현 방법을 고민해보았습니다.
테스트 주도 개발 (Test-Driven Development; TDD)을 학습하고 적용해보았습니다.
계산기 프로젝트 Step 1을 계속 진행하였고, Swift의 고차함수와 사용 방법, 그리고 전달인자의 클로저 축약 표현에 대해 학습했습니다.
Auto Layout에 대해 학습했습니다.
계산기 프로젝트 Step 1을 이어 진행하였고, Auto Layout의 Constraint Priorities, Compression Resistance (CR)와 Content Hugging (CH)을 학습하였습니다.
계산기 프로젝트 Step 1을 PR하였고, 프로젝트 수행 시 의문점에 대해 조언을 구했습니다.
계산기 프로젝트에서 페어 프로그래밍으로 하나되는 한 주였습니다..!
내용 미완으로 Publish 못한 지난 TIL들을 Publish하였고, Learning Tree를 업데이트하였습니다.
JSON, Table View를 활용한 2 주 간의 개인 프로젝트에 착수하였고, Table View와 JSON에 대해 학습했습니다.
NSDataAsset과 JSONDecoder 타입의 인스턴스 메서드를 활용하여 JSON 데이터를 디코딩하는 방법을 학습했고, 디코딩 작업을 간소화시킬 방법에 대해 고민해보았습니다!
프로젝트 PR에 대한 피드백을 수신하여 고민하고 코드를 수정했습니다. 기존 메서드를 래핑하는 더 나은 방법을 고민해보고, Class Diagram을 수정했습니다.
Accessibility, Accessibility Inspector, Dynamic Type, Scroll View에 대해 공부하였습니다.
Table View, Navigation Controller, enum의 associated value, Numberformatter에 대해 학습하고 적용해 보았습니다.
ViewController 전환 간 데이터 전달 방법과 Segue 실행 방법, Swift 타입의 이니셜라이저에 대해 학습하고 적용해보았습니다.
고차함수와 클로저, 텍스트 UI 요소 3가지, final 키워드의 적용, Protocol 채택 시 extension을 활용하여 가독성을 높이는 방법을 학습하였고, Class Diagram을 업데이트하고 진행 중인 프로젝트의 STEP 2를 PR 하였습니다.
코드 작성 시 Indentation, line-wrapping 과 같은 스타일, TableView에서 indexPath를 얻는 방법, 상수를 관리하기 위한 Name space, UI 프로퍼티 네이밍, OSLog를 통해 통합 로깅 시스템에 로깅하는 방법을 학습하였습니다.
진행 중인 프로젝트의 PR에 대해 피드백 주신 부분에 대해 추가적인 코멘트를 남겼습니다. 이번 버전에서 머지를 해주셨네요~!
진행 중인 프로젝트의 Step 3를 PR하였습니다. 고민한 내용을 해결한 방법과 실행화면을 첨부하였어요.
운영체제의 기초적인 내용을 학습했습니다.