swift75 Data Flow Through SwiftUI WWDC 2019 세션 중 하나인 Data Flow Through SwiftUI의 흐름을 따라가며 요약/메모. SwiftUI와 Combine 영상을 다시 보던 중 정리할 겸 해서 포스팅합니다. 발표 시점으로부터 시간이 흐르며 리네이밍 된 API 등도 있어서 그건 따로 표기를 해두었습니다. 애플이 추구하는 방향, 핵심적인 개념 등은 변하지 않았기 때문에 아직 듣지 않으신 분들은 한 번 들어보시거나 이 포스트를 읽어보셔도 좋을 것 같습니다. 세션 개요SwiftUI는 UI개발의 복잡성을 해결하기 위해 새롭게 고안된 것으로써, 심플하지만 강력한 툴입니다. 여러분이 일관성있는 아름답고 정확한 유저 인터페이스를 작성할 수 있도록 완전히 새롭게 만들어졌습니다. 완전히 예측 가능하며 오류도 없이 UI를 데이터에 의존하.. 2020. 2. 25. Property Wrapper Swift 5.1 에서 추가된 Property Wrapper의 Apple Docs 번역글입니다. 제 블로그에서 Swift 번역글이 스테디하게 인기가 좋길래 새로운 피처가 추가된 기념으로 한번 해보았습니다 :) 제 번역 포스트는 원문 그대로의 직역이 아닌 이해를 돕기 위한 의역, 부연설명이 다소 많이 되어 있으니 참고해주세요. 오역 발견 시 꼭 제보해주시면 감사하겠습니다. * 이 문서는 Swift에서의 기본 Property 동작에 대한 이해가 선행되어야 이해하실 수 있습니다. Property Wrappers Property wrapper는 프로퍼티가 저장되는 방식을 관리하는 코드와 프로퍼티를 정의하는 코드 사이에 분리 계층을 추가합니다. Property wrapper는 어떨 때 사용할까요? 예를 들어보겠습.. 2020. 2. 10. Swift로 그래프 탐색 알고리즘을 실전 문제에 적용해보기 - BFS 편 그래프 탐색 알고리즘에 대한 이해가 선행되어야 한다. 그래프와 DFS/BFS의 개념을 모른다면 여기를 추천한다. Depth-First Search (DFS) - 저번 시간에 한 것📍 - 깊이 우선 탐색 - 이번 포스팅에서는 weigh을 가지지 않는 방향 그래프에서 모든 경우를 구해볼 때 이 DFS를 사용할 것이다. 예를 들면 1부터 N까지의 자연수 중 n개의 집합을 만들 수 있을 때, 가능한 모든 순열을 구해야 할 때 사용할 수 있다. - 스택을 통해 구현한다. 즉, 재귀함수를 통해 구현할 것이다. (함수가 호출되면 스택 영역에 쌓이게 된다. 함수가 무한호출될 때 Stack Overflow 가 발생하는 것도 여기서 기인하는 것.) Breadth-First Search (BFS) - 이번 시간에 할 것📍 .. 2020. 1. 10. Swift로 그래프 탐색 알고리즘을 실전 문제에 적용해보기 - DFS 편 그래프 탐색 알고리즘에 대한 이해가 선행되어야 한다. 그래프와 DFS/BFS의 개념을 모른다면 여기를 추천한다. Depth-First Search (DFS) - 이번 시간에 할 것📍 - 깊이 우선 탐색 - 이번 포스팅에서는 weigh을 가지지 않는 방향 그래프에서 모든 경우를 구해볼 때 이 DFS를 사용할 것이다. 예를 들면 1부터 N까지의 자연수 중 n개의 집합을 만들 수 있을 때, 가능한 모든 순열을 구해야 할 때 사용할 수 있다. - 스택을 통해 구현한다. 즉, 재귀함수를 통해 구현할 것이다. (함수가 호출되면 스택 영역에 쌓이게 된다. 함수가 무한호출될 때 Stack Overflow 가 발생하는 것도 여기서 기인하는 것.) Breadth-First Search (BFS) - 다음 시간에 할 것📍 .. 2020. 1. 7. Swift로 작성해보는 기본 자료구조 - Stack, Queue Swift로 작성하는 Stack struct Stack { var isEmpty: Bool { return self.list.isEmpty } var top: T? { return self.list.last } mutating func push(_ item: T) { self.list.append(item) } mutating func pop() -> T? { return self.list.popLast() } private var list = [T]() } Swift로 간단히 작성해본 Stack이다. 특별히 어려운 부분은 없으며 포인트가 되는 부분은 다음 두 가지다. 1. 제네럴한 아이템을 관리할 수 있도록 제너럴 를 사용하였다. 2. 값 타입인 Struct로 작성했기 때문에 push 와 pop 함수에.. 2020. 1. 6. 프로토콜 확장으로 기능을 추가하기 존 호프만의 Protocol-Oriented Programming with Swift(스위프트 프로토콜지향 프로그래밍) 5장 읽으며 메모 (요약글 아님) 프로토콜 확장의 이점 (기능을 추가로 지원해주는 관점에서, 서브클래싱으로 그것을 이루었을 때와 비교했을 때) 클래스를 서브클래싱하여 그곳에 원하는 기능을 더했을 때의 한계: 원본 클래스에는 실제 기능을 추가하지 않으므로, 그 기능이 필요한 부분에서는 원본 클래스의 모든 인스턴스를 새로운 서브클래스의 인스턴스로 변경해야 한다. 프로토콜 확장의 경우, 해당 프로토콜을 따르기만 하면 그 기능을 제공할 수 있기 때문에 이런 치환 작업 없이 자동으로 확장한 함수/프로퍼티를 이용할 수 있다. 물론, 서브클래싱은 참조 타입(클래스 등)만 가능하고 값 타입(구조체, .. 2020. 1. 1. 이전 1 2 3 4 ··· 13 다음