비교대상 #1 -Code Snippet Library
- 외부에 미리 만들어 둔 텍스트를 그대로 에디터에 붙여줍니다
- 코드 플레이스 홀더 작성 가능
- 라이브러리 패널 / 단축키로 빠르게 호출 가능
20.
비교대상 #1 -Code Snippet Library
- 외부에 미리 만들어 둔 텍스트를 그대로 에디터에 붙여줍니다
- 코드 플레이스 홀더 작성 가능
- 라이브러리 패널 / 단축키로 빠르게 호출 가능
- 개발자가 직접 불러서 사용해야함. (백날 만들어 놔도…)
- 팀 내부에서 공유하기 번거로움
- 특정 위치에 스니펫 파일들을 설치하는 형식, 설치 스크립트 돌려야 해요
- 한번 설치된 파일 업데이트는 더 번거로움
비교대상 #2 -C Macro
- 프로젝트 내부에 정의한 텍스트를 전처리기가 그대로 붙여 넣어줍니다
- 텍스트 취급이라서 호출도 마음대로 사용 가능
35.
비교대상 #2 -C Macro
- 프로젝트 내부에 정의한 텍스트를 전처리기가 그대로 붙여 넣어줍니다
- 텍스트 취급이라서 호출도 마음대로 사용 가능
- 멀티라인 정의
- 소스 파악할 때 위 아래로 오르락 내리락
- 다른 프로젝트에 공유할때 소스카피
- 텍스트 취급, 로직 실수 발생이 너무 쉬움
36.
스위프트 매크로가 하는일
이미지 출처: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
37.
매크로가 작성된 곳에코드를 붙여넣어 줍니다
스위프트 매크로가 하는 일
이미지 출처: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
38.
차이점 #1
이미지 출처:https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
매크로가 작성된 곳에 코드를 붙여넣어 줍니다
39.
매크로가 작성된 곳에컴파일러가 코드를 만들어서 붙여넣어 줍니다
차이점 #1
이미지 출처: https://docs.swift.org/swift-book/documentation/the-swift-programming-language/macros/
40.
차이점 #2
이미지 출처:https://www.timc.dev/posts/understanding-swift-packages/
41.
차이점 #2
Swift PackageManager
이미지 출처: https://www.timc.dev/posts/understanding-swift-packages/
42.
차이점 #2
Swift PackageManager
팀 내부에서 공유, 버전관리, 다른 프로젝트에서 재사용
이미지 출처: https://www.timc.dev/posts/understanding-swift-packages/
스위프트 매크로는
- 컴파일러가원하는 위치에 코드를 생성해서 붙여줍니다
- 스위프트 패키지를 이용하여 배포
- 만들어진 코드 미리보기, 복사 붙여넣기 가능
- 타입 추론 돌아감
48.
스위프트 매크로는
- 컴파일러가원하는 위치에 코드를 생성해서 붙여줍니다
- 스위프트 패키지를 이용하여 배포
- 만들어진 코드 미리보기, 복사 붙여넣기 가능
- 타입 추론 돌아감
- 배경지식이 필요함
- 사용할 때: 7가지 역할을 이해해야 함
- 작성할 때: Swift Syntax Tree가 생소함
요구사항 소개
Decodable을 채택한자료형을 사용하기 불편한 경우
혹은 Codable 이전에 구현 된 프로젝트들
WKScriptMessage.body: Any -> JSONString -> Instance
XMLParser -> [String: Any] -> Instance
😿
😹
139.
요구사항 소개
Decodable을 채택한자료형을 사용하기 불편한 경우
혹은 Codable 이전에 구현 된 프로젝트들
WKScriptMessage.body: Any -> JSONString -> Instance
XMLParser -> [String: Any] -> Instance
Legacy Initializers
😿
😹
140.
Heritage Initializers
요구사항 소개
Decodable을채택한 자료형을 사용하기 불편한 경우
혹은 Codable 이전에 구현 된 프로젝트들
WKScriptMessage.body: Any -> JSONString -> Instance
XMLParser -> [String: Any] -> Instance
😿
😹