 Apple Lover Developer & Artist

영속적인 디자인에 현대의 공감을 채워넣는 공방입니다

반응형

swift 39

[Challenge] 🛠️ iOS 앱 설계 퓨전 레시피 2부 - MVC 디자인 패러다임

Overview 어떤 클래스나 구조체를 생성할지 어떻게 결정하는가? 어떤 속성들을 가져야 하는가? 어느 객체가 다른 객체들의 함수를 호출해야 하는가? 소프트웨어 개발자들은 수십 년간 이 질문에 답할 수 있는 패러다임을 고민해 왔다. MVC MVC는 오브젝트에 Model View Controller로 책임을 분류하여 할당하고 오브젝트 간의 소통 방식을 정의하는데 도움을 준다. 다음의 그림은 3가지 타입의 오브젝트가 서로 어떤 관계를 맺어서 동작하는지에 관한 Apple 방식의 조감도를 보여준다. 구체적인 소통 메커니즘을 이해하기 위해 개별 타입들이 어떤 책임을 갖고 있는지 살펴본다. Models Model Objects Encapsulate Data and Basic Behaviors 모델은 아이템이나 개념..

[Challenge] 🛠️ iOS 앱 설계 퓨전 레시피 1부 - 조감도

Overview 앱의 설계 과정에서 과거의 유산과 현대의 개발 패러다임에 대한 필자 스타일의 퓨전 장르를 만들어보는 것이 목표이다. Fusion Fusion, 서로 다른 사물이 융합되는 것을 의미하는 명사이다. 우리는 주변에서 서로 다른 양식의 문화가 결합된 퓨전 요리 혹은 퓨전 음악을 찾아볼 수 있다. 기술의 세계에도 퓨전 양식은 존재한다. 예를 들어 애플의 적용 사례가 있다. 2012년 아이맥을 공개하며 컴퓨터의 보조기억장치인 HDD와 SSD를 macOS 상에서 논리적으로 묶어 하나의 저장장치로 사용하는 기능이었다. 사용자가 데이터의 저장 위치를 직접 제어하지 않도록 도와준 이 기능은 "Fusion Drive" 기술로 불렸다. iOS가 출시된 지 약 16년이 지나면서 소프트웨어 개발 도구는 진화해 왔..

[Swift] 공식문서 씹어먹기: Automatic Reference Counting

Overview Swift는어플리케이션의 메모리 사용을 추적하고 관리하기 위해 Automatic Reference Counting (ARC) 를 사용한다. 대부분의 경우에서 ARC는 Swift에서 메모리 관리가 "Just Works" 한다는 의미이다. 따라서 개발자는 스스로 메모리 관리에 대해서 신경쓸 필요가 없다. ARC 는 클래스 인스턴스가 사용했던 메모리를 자동으로 해제시켜주며 이 과정은 해당 인스턴스가 불필요해지는 시점에서 이뤄진다. 하지만 일부 경우에서 ARC가 메모리를 관리하기위해 코드 사이의 관계에 대한 더 많은 정보를 더 요구하는 경우가 있다. 이 chapter 에서는 위과 같은 상황을 묘사하며 어떻게 ARC가 어플리케이션의 메모리를 관리하고 있는지 설명해준다. Swift 에서 ARC 를 ..

[Swift] 공식문서 씹어먹기: Collection Type - Dictionary

Dictionary Dictionary 는 Key-Value 쌍을 가지며 순서가 없는 Collection 이다. Generic Collection 으로 구현되어있으며 저장할 수 있는 Key와 Value가 명확하다. 따라서 같은 타입의 key 그리고 같은 타입의 value 값의 사이의 관계를 순서 없이 저장할 수 있다. Dictionary 에서 각 value 는 유일한 key 값과 연결되어있어서 key 값은 value 를 구분할 수 있는 식별자 역할을 한다. 배열과 다르게 dictionary 내부의 자료에 대한 순서가 없으며 식별자를 통해서만 값을 찾을 수 있다. Dictionary type을 축약형으로 표현할 수 있다. 원본: Dictionary 축약본: [Key: Value] ← 선호되는 방식 init..

Lecture 9 Review Part 2: EmojiArt Drag and Drop Multithreading

EmojiArt MVVM fileprivate enum with associated values Drag and Drop Model 새로운 EmojiArt 프로젝트를 생성한 후에 EmojiArtModel 모델을 생성한다. 일반적으로 모델에 Model이라는 이름을 함께 사용하지 않는다. 이번의 경우 지난 분기 수업에 있어서 앱의 이름과 동일한 구조체가 있을때 Preview가 혼동되는 문제가 있었다. /// UI Independent representation of EmojiArtDocument struct EmojiArtModel { /// Custom type background var background: Background /// Another custom type of array var emojis..

반응형