일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- UIDocument
- JSONEncoder
- UIBezierPath
- Hashable
- Singleton Design Pattern
- 에어팟
- CustomStringConvertible
- Arc
- unowned
- AVFoundation
- Observable
- MVP
- Git
- reactivex
- uicollectionview
- UIDynamicAnimator
- Equatable
- UIGestureRecognizer
- UIDocumentBrowserViewController
- CoreGraphics
- rxswift
- weak
- Swift
- IOS
- JSONDecoder
- NSAttributedString
- 오늘의성취도
- PhotoKit
- Stanford cs193p
- Codable
- Today
- Total
목록전체 글 (39)
아직은 개린이

MVC 패턴에 워낙 익숙해져있어서, 새로운 패턴으로 코드를 작성하는 연습을 많이 해봐야 할 것 같다! 우선 오늘은 간단한 예제로 MVP 패턴에 대해 학습한 걸 정리해보려고 한다. MVP 간단히 MVP에서 각각이 무엇을 의미하는지 다시 짚고 넘어가보자. Model - MVC 패턴에서 의미하는 모델과 같은 역할을 한다. 앱의 실행에 필요한 실질적인 데이터를 갖고 있다. View - UIView와 UIViewController가 여기에 해당한다. 비즈니스 로직과 관련된 일은 모두 Presenter가 하도록 한다. Presenter - UIKit과 관련이 없는 로직들을 수행한다. 사용자 응답에 반응하거나 UI를 업데이트하는 일을 한다. 예제코드 화면에 나타난 두 버튼 중 어느 버튼을 클릭했는지 출력하는 간단한 ..

앞선 글에서 좋은 아키텍처란 무엇인지와 MVC 패턴에 대해 살펴보았다. 이번 글에서는 새롭게 공부하는 주제인 MVP 패턴에 대해 알아보고자 한다. MVP MVP 패턴의 다이어그램은 아래와 같다. MVC 패턴과 굉장히 유사한 구조로 이루어져있지만, MVC는 아니다! 우선 MVC와 달리 UIView와 UIViewController가 Passive View에 속해있다. 따라서, Controller에 해당하는 Presenter에는 View의 레이아웃과 관련된 코드와 View의 Life Cycle을 다루는 코드가 들어가지 않는다. 대신 View와 Model의 중재자 역할에 더 집중하여 View의 데이터와 상태 변화를 갱신하는 역할만을 수행한다. 이로 인해 각 객체의 독립성이 높이졌고, 테스트가 용이해졌다. 하지만..

iOS의 아키텍처 패턴에는 MVC, MVP, MVVM 등 여러 종류가 있다. 사실 그동안에는 MVC 패턴으로만 코드를 짰었다. Apple이 기본적으로 적용한게 MVC 패턴이기도 하고, 단순하기 때문이었다. 하지만, Apple의 MVC 패턴을 Massive View Controller라고 하는 것처럼 ViewController의 몸집이 너무 커서 코드가 조금만 길어져도 정신을 똑바로 차려야(?) 하는 단점이 있었다. 또한, Unit Test를 프로젝트에 적용하는 연습을 시작했는데, MVC 패턴에는 적용하기 어렵다는 문제도 있었다. 그래서! 다른 패턴을 이용하여 코드 작성을 하는 연습을 하기 위해 MVC 외의 MVP, MVVM 등에 대해 알아보고자 한다.! 오늘은 우선 아키텍처 패턴이 왜 중요한지 알아보고,..

Swift의 ARC는 레퍼런스 카운트를 관리하여 메모리 누수를 방지하는 역할을 한다. 이 때, 인스턴스끼리 강한 순환 참조 문제를 해결하는 두가지 방법이 있는데 이에 대해 알아보고자 한다. 클래스 인스턴스의 강한 순환 참조를 해결할 수 있는 방법은 weak reference와 unowned reference를 쓰는 것이다. weak와 unowned는 strong 참조와 달리 레퍼런스 카운트를 세지 않는다. Weak References Weak Reference(약한 참조)는 참조하는 인스턴스를 강하게 유지하지 않는 참조이다. 다른 인스턴스의 수명이 짧을 때 사용한다. 참조하는 인스턴스를 강하게 유지하지 않기 때문에 약한 참조를 하는 동안 해당 인스턴스가 할당 해제될 수 있다. 할당 해제가 되면 ARC는 ..

ARC(Automatic Reference Counting) iOS는 앱의 메모리 사용을 추적, 관리하기 위해 ARC 기능을 사용한다. ARC는 Automatic Reference Counting의 줄임말로 참조 메모리 관리를 자동으로 해주는 기능을 뜻한다. 인스턴스가 참조되거나 참조해제될 때 횟수를 카운팅하고, 횟수가 0이 되면 인스턴스를 메모리에서 해제하는 방식으로 수행된다. How ARC Works 클래스가 새로운 인스턴스를 생성할 때, ARC는 인스턴스에 대한 정보를 저장할 메모리 청크를 할당한다. 할당한 메모리 청크에는 인스턴스의 타입에 대한 정보, 인스턴스와 관련된 프로퍼티 값 등을 저장해둔다. 더이상 인스턴스가 필요하지 않게 되면 자동으로 메모리에서 비우는 방식으로 메모리를 관리한다. 하지만..

App 소개 오늘의 성취도를 색으로 기록하고, 관리할 수 있는 어플리케이션 앱스토어 페이지 : https://apps.apple.com/us/app/%EC%98%A4%EB%8A%98%EC%9D%98-%EC%84%B1%EC%B7%A8%EB%8F%84/id1497859467?ign-mpt=uo%3D2 오늘의 성취도 오늘의 성취도를 색으로 기록하다 당신의 오늘 하루 성취도를 보기 쉽게 기록해보세요! 매일 성취도 값에 따른 색을 하나 정하고, 간단한 메모를 작성할 수 있습니다:) === 주요 기능 [메인 화면] - 캘린더에 각 날짜별 성취도를 색으로 확인할 수 있습니다. - 우측 상단의 + 버튼을 통해 오늘의 성취도를 추가, 수정할 수 있습니다. - 하단에는 월별 성취도 데이터와 메모를 볼 수 있는 섹션이 ..

프로젝트 소개 부스트코스 iOS 프로그래밍의 다섯번째 프로젝트 서버 API를 이용해 영화 정보 데이터를 요청하고 받아오는 어플리케이션 개발 기간 5일 프로젝트 상세 스펙 [화면 1 - 영화 목록] Tab Bar Controller와 Navigation Controller의 결합 형태 첫번째 탭은 테이블뷰, 두번째 탭은 컬렉션 뷰 (표시되는 내용은 같음) 화면 오른쪽 상단의 bar button을 눌러 정렬 방식 변경 가능 아래쪽으로 잡아당기면 새로고침됨 영화 셀을 누르면 화면 2로 전환 [화면 2 - 영화 상세 정보] 영화 포스터를 포함한 소개, 줄거리, 감독/출연, 한줄평 데이터를 받아와서 배치해줌. 한줄평 오른쪽 상단의 새로운 한줄평 남기기 버튼을 탭하면 화면 3으로 전환 [화면 3 - 한줄평 작성] ..

프로젝트 소개 Edwith 부스트코스 iOS 프로그래밍 과정의 네번째 프로젝트 Photos 프레임워크를 활용하여 내 사진첩의 사진을 컬렉션뷰로 보여주는 어플리케이션 개발 기간 3일 프로젝트 상세 스펙 [화면 1 - 앨범 목록] 어플리케이션에 처음 진입 시, 사진 라이브러리 접근 허용 여부를 물어봄 수락 시, 디바이스의 사진에 접근하여 기본 앨범과 사용자 커스텀 앨범을 가져옴 컬렉션 뷰의 셀을 선택하면 화면 2로 전환 [화면 2 - 앨범 내 사진 목록] 사진 다중 선택 기능 Navigation bar의 "선택" 버튼을 누르면 버튼의 타이틀이 "취소"로, Navigation Item의 title이 "항목 선택"으로 바뀜. 사진을 선택하면 선택한 사진의 윤곽선과 투명도를 변화해 선택되었음을 나타냄. 선택된 사..