Tuist 구성 파일
·
iOS/Tuist
들어가기 전이번 학습에서는 Tuist의 디렉토리 구조와 함께 각 파일들의 역할을 알아보자.미리 보기 이렇게 구성되어있는 Tuist 세팅으로 다음 명령어를 입력해보면 다음과 같은 창이 열린다.tuist edit  // tuist 프로젝트 편집구성 Plugins 플러그인은 Manifests에 사용될 다양한 Plugin을 모아놓은 것Plugin은 모듈화를 위한 모듈 같은 느낌.. 모듈화를 위해 사용할 모듈들을 모아놓은 것여러가지 플러그인에 공통적으로 보이는 Plguin.swift 파일이 있다.Plguin.swift 파일은 말 그대로 해당 플러그인을 정의하는 곳Manifests에서 사용 시  import ~~Plugin을 하면된다.Manifests실질적으로 모듈들이 정의되는 공간 1) Projects.swift..
Framework vs Library
·
iOS/Tuist
들어가기 전이전 학습시간에 우리는 Tuist를 학습하기 전 프로젝트를 구성하는 다양한 개념들을 알아봤다. 학습 내용 중 product의 여럭 case중 library와 framework , static과 dynamic이라는 키워드가 보인다.한번 각 키워드가 의미하는 바가 무엇인지 알아보자.library정의프로젝트에 사용할 Source 코드 또는 데이터의 집합 , 즉 이미지 같은 resource들은 포함될 수 없다.종류종류는 다음과 같이 2가지로 나뉜다.  나누는 기준이 뭘까?링크되는 시점과 메모리 관리 방식 차이를 기준으로 나뉜다고 생각한다.static library dynamic library 한번 자세히 하니씩 알아보자. 1. static library컴파일 시 static linker를 통해 사용되..
프로젝트 생성 관련 사전 지식
·
iOS/Tuist
들어가기 전Tuist가 프로젝트를 구성하는 여러가지를 swift언어로 미리 구조화하고 그것을 기반으로 프로젝트 파일을생서하게 도와주는 tool인 것은 이전 시간에 확인했다. 그렇다면 프로젝트를 구성하는 여러가지 개념을 모른다면 Tuist를 사용하지 못한다는 것과 똑같다이게 Tuist가 러닝커브가 높은 이유 중 하나인 것 같다. 이번 학습은 프로젝트를 구성하는 여러가지 개념을 정리해보자.Projecttuist 공식 문서를 살펴보면 Xcode proejct를 생성하는 API라고 정의되어있다. 어떤 형태인지 살펴보자.public struct Project : Codable, Equatable { ... public init( // name: 생성되는 xcode 프로젝트 이름 ..
Tuist란?
·
iOS/Tuist
정의tuist 공식문서를 살펴보면 다음과 같이 정의 되어있다.CLI 툴프로젝트 생성대규모 모듈화 프로젝트의 유지보수 및 최적화스위프트로 작성정리하면 모듈화 프로젝트를 유지보수 및 최적화 하는 프로젝트 생성 CLI 툴이다.   장점swift로 모듈간의 의존성 관계를 정의할 수 있다.Project.swift를 통해 tuist를 통해 실행할 때 마다 xcodeproj파일을 생성하므로 협업 시 xcodeproj로 관련 충돌이 일어나지 않는다.별도의 자동화를 쉽게할 수 있다.그래프를 통해 모듈간 의존성을 시각적으로 보여줄 수 있다.tuist의 또 다른 장점은 프로젝트를 생성할때 Resources/ 안에 파일 확장자에 따라  다음과 같이 enum을 통해쉽게 접근할 수 있게 제공해준다는 점이다. 설치tuist 4.0..
Task Cancellation
·
iOS/Swift Concurrency
이전과 차이점기존 GCD를 이용했을 때는 작업을 취소하기가 거의 불가능했거나 많이 번거로웠다.하지만 Swift Concurrency에서는 작업의 취소가 굉장히 편해졌다. 이번 포스팅부터는 컨커런시에서 취소하는 법 정확히는 취소를 전파하고 그 취소에 대한 핸들링하는 법을 알아보자.  종류1. 명시적 취소cancel() 메서드를 통해 자식 작업들에게 취소를 전파2. 암시적 취소자식 작업에서 에러가 발생했을 때특징1. 작업 취소가 가능한 구조는 다음과 같다.동일한 context , Task 안의 Task 또는 Task.detached는 해당되지 않음구조적 동시성 구조 ,  async let or TaskGroup2. 작업의 취소는 즉각 취소가 아닌 취소되었음을 알려는 행위다.task.canecl()을 통해 T..
구조적 동시성 (1)
·
iOS/Swift Concurrency
Structured Concurrency정의구조적이라는게 무슨 뜻일까 ?? 나는 구조적 = 계층적 이란 느낌이  들었다. 계층 구조의 대표적인 구조는 부모 - 자식 구조로 생각할 수 있다.작업들 역시 마찬가지다.  특징작업간의 의존성이 생김 , 자식 작업이 모두 끝나야 부모가 끝날 수 있음부모가 자식 작업을 취소할 수 있음 (취소 전파)context 상속 , [우선순위, 로컬 변수 등]자식 작업의 우선순위가  부모보다 높아지면, 부모 작업도 같이 높아짐이전 코드는 동시성일까?구조적 동시성에 대해 한번 깊게 고민해보자.아래 그림을 보며 생각해보자.너무 간단하다 아래 그림이 동시에 실행되는 구조 같다.우리는 동싱성에 대해 배우고 있는데 그러면 이런식으로 코드를 짰을까 ?? 이번에는 우리가 직접 짰던 코드를 ..