 Apple Lover Developer & Artist

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

반응형

IOS programming 20

Lecture 1 Review: Developing iOS 11 Apps with Swift

Overview 이 과정에는 iOS 어플리케이션을 개발하는 방법에 관하여 학습합니다. 전제 조건으로 객체지향 프로그래밍과 친숙해야 합니다. 상업적인 개발 플랫폼에는 데이터베이스, 그래픽스, 멀티미디어, 멀티스레딩, 애니메이션, 네트워크와 같은 CS 컨셉이 사용됩니다. 아래쪽에 위치한 layer 의 경우 하드웨어에 가까우며 위쪽으로 올라갈수록 사용자에게 가까워진다. iOS는 BSD 변형 Unix 기반의 운영체제이다. Core OS 계층에서 발생하는 대다수의 작업은 C로 이뤄지며 이 강의에서는 다루지 않는다. Core Service 계층은 객체지향적으로 구현된 계층이다. 휴대폰의 위치, 방향, 파일시스템에서 파일에 접근할 때 이 계층을 사용한다. 본래 아이폰은 아이팟으로 부터 탄생했다. 오디오, 비디오, 이..

[Challenge] iOS 13 이후의 Scene 톱아보기!

Overview Scene 은 앱의 UI 인스턴스를 동시에 여러개 관리하며 적절한 UI 인스턴스로 resources 을 연결해준다. UIKit 은 앱의 UI의 각 인스턴스를 UIWindowScene 객체를 통해 관리해준다. 하나의 scene 은 window 와 view controller 를 포함하고 있으며 UI의 한 인스턴스를 보여주기 위해서이다. 각 scene 은 상응하는 UIWindowSceneDelegate 객체를 갖고있으며 UIKit 과 앱 사이에 상호작용을 조직하기 위해 사용할 수 있다. Scene 은 서로 병렬적으로 동작하며 같은 메모리 공간과 앱의 프로세스 공간을 공유한다. 결론적으로 하나의 앱은 여러개의 scene 을 가질 수 있으며 scene delegate 객체는 동시에 활성화된다. ..

[iOS - Laboratory] iOS 앱의 실행 흐름 추적해보기

Overview UIKit은 앱에 필요한 다양한 핵심적인 객체를 제공한다. 그 중에는 System과 상호 작용하는 객체, 앱의 main 이벤트 loop에서 동작하는 객체, 컨텐츠를 화면에 보여주는 객체가 포함되어있다. 개발자는 위 객체들 다수를 그냥 사용하거나 약간의 수정을 거쳐 사용할 수 있다. 어느 객체를 수정할 수 있으며 언제 객체들을 수정할 수 있는지 아는 것은 앱을 구현함에 있어서 중요한 요소이다. UIKit app 의 구조는 Model-View-Controller (MVC) 디자인 패턴에 기반하고 있으며 위에서 언급된 객체들은 디자인 패턴에 맞춰서 목적에 알맞게 나뉘어지게 된다. 대표적으로 ViewController 와 app delegate 객체는 데이터 객체와 UIKit View 사이에서 ..

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..

Lecture 9 Review Part 1: EmojiArt Drag and Drop Multithreading

기존에 만들어온 Memorize 데모앱 대신 새로운 EmojiArt 를 만들어 볼 것이다. 앞으로 나올 강의에서는 EmojiArt를 기준으로 수업한다. Collections of Identifiable Memorize 앱에서 다음과 같은 코드를 사용해본 경험이 있을 것이다. func choose(_ card: Card) { if let index = cards.firstIndex(where: { $0.id == card.id }) { cards[index].isFaceUp = true } } 카드 배열에서 선택된 카드를 찾아서 isFaceUp 혹은 isMatch 와 같은 것들을 설정해줘야하기 때문이다. 카드는 구조체이고 구조체는 값 타입이며 값타입은 복사되기 때문에 배열에서 바로 변경해야한다. 위와 같은..

반응형