 Apple Lover Developer & Artist

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

반응형

전체 글 116

Lecture 5 Review Part1: Properties Layout @ViewBuilder

@State 이전에도 보았드시 SwiftUI에서 모든 View struct는 읽기전용이다. 따라서 View를 처리할 때 let이나 computed var를 사용하는 것만이 유의미하다. 다만 @ObservedObject와 같이 property wrapper가 사용되는 경우에는 var을 사용한다. 왜 View는 Read-Only 일까? View는 매번 생성되고 버려진다. View의 body는 주변에 붙어있다. View의 body가 화면에 있다면 당연히 어딘가에 존재한다. 하지만 그 body를 만든 View는 아마도 오래전에 버려졌을 것이다. 여튼 View 구조체는 mutable한 var을 가질만큼 오래 살아있지 않는다. 하지만 걱정할 필요없다. 우리의 View는 Stateless하기 때문에 자신의 상태는 필..

Lecture 4 Review Part2: Memorize Game Logic

Varieties of Types enum 열거형(enumeration) 은 일종의 구조체와 클래스와 같으며 이산적인 값만을 갖고 있다. 예시를 보면 쉽게 이해될 것이다. enum FastFoodMenuItem { case hamburger case fries case drink case cookie } 어느 패스트푸드 판매점은 위와 같이 4가지의 품목만 판매한다. 햄버거, 감자튀김, 음료 및 쿠키가 그 예시일 것이다. 옵션이 특정 범위로 정해져 있는 경우 enum 을 사용하면 이산적인 값만을 갖고 있다는 특징을 살려서 훨씬 더 직관적으로 활용할 수 있게된다. enum 또한 struct 타입과 마찬가지로 value 타입이며 이러한 사유로 함수의 인자나 다른 변수로 넘길 때 값복사가 발생된다. Swift에..

Lecture 4 Review Part1: Memorize Game Logic

이전에 구현한 Model 과 ViewModel을 SwiftUI로 구현한 View에 연동해보는 시간을 가질 것입니다. View 구현에서 카드를 불러오거나, 뒤집는 등의 Model이나 View Model을 통해 이루어져야 하는 코드를 지워줍니다. struct ContentView: View { // Model의 내용을 보여주는 Agent @Main에서 설정함 var viewModel: EmojiMemoryGame var body: some View { ... } } Swift UI를 통해 선언된 View 구조체의 상단에 viewModel 프로퍼티를 선언해준다. Swift에서 모든 상수나 변수는 무조건 값을 가지고 있어야 하는데 위 코드에는 type 만 명시되어 있고 값을 할당하는 코드가 보이지 않는다. 이게..

Lecture 3 Review Part 2: MVVM and the Swift type system

이번 시간에는 Swift Programming Language 에서 제공하는 Type System 에 대해 탐구해 볼 것이다. Swift 의 토대를 이루고 있는 6가지 타입들을 이해하지 못하면 결국 Swift 또한 이해하지 못하기 때문이다. struct ContentView, CardView와 같은 UI, Memorize 게임에서의 Model이 struct의 한 예시이다. class Object-Oriented Programming 을 구현할 수 있으며 MVVM에서의 View Model이 한 예시이다. struct와 class의 공통점 문법이 비슷하다. 예를들어 구조체 내부에 함수나 변수를 선언할 때에는 다음과 같은 동일한 구문을 통해 구현된다. var isFaceUp: Bool // 일반적인 변수 선언..

Lecture 3 Review Part 1: MVVM and the Swift type system

MVVM Design Paradigm MVVM (Model View ViewModel) 은 Design Paradigm 중 하나이며 SwiftUI 를 사용하기 위해 반드시 MVVM 설계 방식을 적용해야 한다. *Design paradigm * Makes it clear where all the diffrent components of your code go and how they interact with each other. 이전 방식으로 앱을 개발할 때 사용되는 UIKit 은 MVC (Model View Controller) 를 사용하며 MVVM 과는 다른 종류의 개발 방식이기 때문에 혼동하면 안된다. MVVM 과 MVC 는 User Interface Code (View) 와 Backend Logic ..

Lecture 2 Review Part 2: Learning more about SwiftUI

지난 강좌에 이어 계속해서 UI 를 발전시키는 시간이다. 앞에서 해온 것과 마찬가지로 본래 코드의 문제점을 찾고 계속 개선해 보는 시간을 가져본다. 카드마다 서로 다른 이모티콘을 띄우는 방법은 없을까? 고민을 해보았다. 간단하게 구조체에 카드에 들어갈 content 변수를 추가한 후에 CardView 인스턴스를 생성할 때마다 서로 다른 content 값으로 초기화 해주면 되겠네! 라고 생각하고 위처럼 코드를 작성해 보았다. 하지만 이 방식 또한 문제점이 있다. 만약 카드가 단 4장이 아니라 수백장이었다면 하나 하나 content 값을 적어서 초기화 해주어야 하는가? 해보지 않아도 아주 귀찮아지는 방식이라는 것이 예측되는 바이다. 우리에겐 이 코드를 개선할 수 있는 비장의 자료구조가 존재한다. 가장 기본적..

Lecture 2 Review Part 1: Learning more about SwiftUI

지난 시간 회고해보기! 지난 수업에서는 View Protocol 의 힘을 빌려 Hello world 텍스트에 padding 값을 주고 색상도 바꿔보고 combiner 를 활용하여 여러가지의 UI 컴포넌트를 합쳐보기도 하였다. Swift UI 를 통해 새로운 함수형 프로그래밍을 경험해보기도 했고 간단한 Swift 구조체 문법을 살펴보기도 했다. 지난 시간 배웠던 개념들에서 한걸음 더 들어가보자! HStack A view that arranges its children in a horizontal line. ZStack 이 UI 컴포넌트를 장치의 화면쪽에서 사용자 방향으로 쌓아가는 Combiner 였다면 HStack 은 장치의 Horizental 방향으로 UI 컴포넌트를 나열해주는 역할을 한다. 위의 예시 ..

Lecture 1 Review Part 2: Getting started with SwiftUI

Swift UI Tour ContentView.swift 전체 코드를 한 번씩 살펴보면 먼저 SwiftUI 패키지를 import 하고 있음을 볼 수 있다. SwiftUI 는 iOS, Apple Watch, mac OS와 같은 Apple 생태계의 App UI를 설계할 때 사용된다. ContentView.swift 에는 UI를 프로그래밍하고 있기 때문에 Swift UI 가 필요하며 Model과 같은 logic에서는 import 할 필요가 없다. 실제로 Swift UI 장점 중 하나는 logic과 UI를 분리한다는 점이다. Swift 문법 중 하나인 struct 키워드가 보인다. data structure 의 약자로 많은 프로그래밍 언어에서 본질적으로 Collections of Variable의 개념으로 존재..

Lecture 1 Review Part 1: Getting started with SwiftUI

Xcode IDE Tour Xcode IDE 는 애플 개발자 홈페이지 혹은 App Store 에서 다운로드 받을 수 있다. Xcode 를 처음으로 실행하면 위와 같은 Splash Screen이 보인다. 우측에는 최근에 생성하거나 작업한 프로젝트의 명단을 보여준다. 새로운 프로젝트를 생성하는 방법은 다음과 같은 두가지 방법이 있다. Create a new Xcode project 을 통해 새로운 프로젝트를 시작한다. Clone an existing project 을 통해 Github Repository 같은 소스 코드 저장소에 있는 프로젝트를 복제한다. 이번 시간에는 첫 번째 Option 을 활용하여 새로운 프로젝트를 생성해 보도록 한다. Choose a template for your new projec..

[알고리즘] 백준 16236 아기상어

도입 2020년 상반기 삼성전자 기출문제인 백준(#16236) 아기상어 문제를 풀어봅시다! 탐색 및 시뮬레이션 문제입니다. 처음 보기에 문제가 길고 복잡해서 어려워 보일 수 있습니다. 하지만 먼저 문제를 잘 이해했는지 꼭 확인해보고 주어진 조건을 확인해가면서 코딩하다 보면 어느새 정답의 코드를 도출해낼 수 있을 것입니다. - solved.ac 골드 5 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크..

반응형