Decorator Pattern(데코레이터 패턴) Decorator Pattern이란? 데코레이터 패턴이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다.데코레이터 패턴은 자기 자신을 다시 자기 자신으로 감싸면서(wrap)큰블럭으로 만들어 나가는 패턴이다. 이러한 과정을 통해 문제를 해결하게 되고 작은 블럭을 다시 작은 블럭으로 감싸는 특징 때문에 Decorator 패턴을 Wrapper 패턴 이라고도 한다 Decorator Pattern은 언제 사용할까? 보편 적으로 데코레이터 패턴이 해결할 수 있는 문제는 상속에 관한 문제다. 다른 객체들에 영향을 주지 않고 개별 객체에 기능들을 추가하고 싶을때 사용한다..
MVC (Model-View-Controller) M: Model V: View C: Controller MVC란 Model View Controller의 약자로 에플리케이션을 세가지의 역할로 구분한 개발 방법론이다. 아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다. 지금까지 사용하던 MVC 아키텍쳐 패턴, 가장 유명하며 자연스럽게 사용되는 아키텍쳐다. 처음 MVC 를 공부해서 적용했을때 기존의 코드와 비교했을때 코드가 훨씬 정리가 되어있는 느낌을받아 좋아했던게 기억난다.. Traditional MVC 위의 다이어그램을 보면 Model, View, C..
iOS Architecture, Design Pattern 지금까지 알고 있는 아키텍쳐는 MVC 가 전부였다. MVP, MVVM 등등 이름만 들어봤을 뿐 공부해서 적용해본적은없다. OpenMarket 프로젝트를 진행하며 ViewController 가 굉장히 무거워지고 작성한 코드가 어디에있는지 찾기어렵고 대체로 정리되어있지 않다라는 느낌을 받아 이를 개선하기위해 아키텍쳐를 공부해보려한다. Architecture 영어단어로써의 아키텍처는 건축학 이라는 뜻이다. 건축으로 치면 건물의 평면도에 해당한다고 할수있다. 소프트웨어아키텍처는 소프트웨어 요소와 이들 요소의 외부 속성 그리고 이들 사이 의 관계를 구성하는 시스템의 구조이다. 간단히 말하자면 소프트웨어 의 구조 라고 할수있을것 같다. 포토샵 으로 예를 들..
Date Picker 아래의 글은 IOS 14.1 버젼의 내용이며 14버젼 이하는 Preferred Style이 없다. 아이폰에서 날짜를 고를 때 자주 마주치게되는 인터페이스 중 하나인 DatePicker! 유저에게 날짜를 고르게 하고 고른 날짜 데이터를 가져올수있게 하는것이다. 요런 녀석을 앱을 사용하면서 종종 봤을텐데 요녀석이다! Date Picker는 Delegate나 DataSource는 따로 없다. 사용은 어렵지 않다! private let datePicker = UIDatePicker() private func setAttributes() { datePicker.preferredDatePickerStyle = .automatic datePicker.datePickerMode = .dateAnd..
defer defer 란 무엇인가? defer 란 사전적 정의로는 연기하다, 지연되다, 미루다 이다. 함수 안에서 주로 사용되며 작성된 위치와 관계없이 함수종료 직전에 실행 된다. defer 내부에 작성된 코드들이 함수 끝나기 직전에 행 해진다는 뜻이다. defer 사용 방법 어렵지 않다 defer 키워드를 사용하고 중괄호를 열어 내부를 작성하고 중괄호를 닫으면 완성이다! 예시를 보도록 하자 func f() { defer { print("First defer") } print("End of function") } f() // Prints "End of function" // Prints "First defer" 기존 함수의 사이클이라면 함수f를 호출하게되면 "First defer" "Second defe..
App's Life Cycle(앱의 수명 주기) App의 생명 주기는 App의 실행,종료 및 App의 Foreground,Background 상태에 있을 때 시스템이 발생시키는 event에 의해 App의 상태가 전환되는 일련의 과정을 뜻한다. 1. Background 앱이 화면상에서 보여지지 않는 상태 가능한 적은 기능을 수행해야 한다. 화면 밖에 있기때문에 가급적 아무것도 하지 않는것이 좋다. 2. Foreground 앱이 화면에 올라와 있는 상태 App이 실행되면 발생되는 상황 UIApplication @UIApplicationMain 또는 @Main 어노테이션이 있는 클래스를 찾아 AppDelegate 객체 생성 Main Event Loop 를 실행(touch, text input등 사용자의..
RAM, ROM 그리고 메모리 구조 RAM, ROM RAM(Random Access Memory) 자유롭게 내용을 읽고 쓰고 지울 수 있는 기억장치. 현재 사용 중인 프로그램이나 데이터가 저장됨. 전원이 차단되면 저장된 데이터가 제거되는 휘발성 기억장치. 일반적으로 주기억장치 또는 메모리 라고 한다. ROM(Read-only Memory) 이름처럼 읽기전용 메모리. 무언가 작성하려면 특수 기기가 필요하고, 삭제나 수정이 불가능한 기억장치. Rom 은 주기억 장치 보다 변경 가능성이 없는 시스템 소프트웨어를 저장시키는데 이용한다. 메모리 구조 프로그램이 실행되는 과정 사용자가 프로그램 실행을 요청한다. 프로그램의 정보를 읽어 메모리(RAM)에 로드(load). 프로그램이 실행되면 운영체제는 메모리(RAM)..
ARC 자동 참조 카운팅 (Automatic Reference Counting) ARC 자동 참조 카운팅 (Automatic Reference Counting) swift는 앱의 메모리 사용량을 관리하기 위해 ARC 를 사용한다. ARC 는 클래스 인스턴스가 더이상 사용되지 않을때 자동으로 메모리에서 해제 시켜준다. ARC 는 해당 클래스의 RC(Reference Counting) 를 통해 사용하고있는지 사용되지 않는지 알수있고 이를 통해 자동으로 메모리에서 해제가 가능하게 된다. 클래스의 저장 방식 클래스를 인스턴스화 하게되면 stack 에는 heap 을 가르키는 포인터가 저장된다. 이때 heap 영역을 참조하게 되므로 RC 는 1 이된다. RC 는 heap 영역에 같이 저장된다. RC 를 측정하기 위..