일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- combine
- UICollectionView
- ios
- uiscrollview
- Clean Code
- rxswift
- Human interface guide
- map
- HIG
- Refactoring
- swift documentation
- RxCocoa
- SWIFT
- UITextView
- 리펙토링
- 리펙터링
- Protocol
- MVVM
- Xcode
- Observable
- 스위프트
- ribs
- clean architecture
- swiftUI
- 리팩토링
- collectionview
- uitableview
- 클린 코드
- tableView
- 애니메이션
- Today
- Total
목록Swift Macro (6)
김종권의 iOS 앱 개발 알아가기
toDouble 매크로 소개 String타입의 숫자를 Double 형태로 바꾸는 매크로이며, 컴파일 타임에 숫자가 아닌 문자열을 미리 컴파일 에러를 발생하게하는것이 목표 toDouble 매크로 구현 Swift macro 프로젝트 생성 ToDouble 매크로 선언 // ToDouble.swift import Foundation import SwiftCompilerPlugin import SwiftSyntax import SwiftSyntaxBuilder import SwiftSyntaxMacros public struct ToDouble: ExpressionMacro { public static func expansion( of node: some FreestandingMacroExpansionSyntax..
(URLMacro 코드는 DougGregor Git repo를 참고하였습니다) URLMacro 소개 보통 URL(string:)을 사용하여 URL을 만들면 run time시점에 해당 string이 URL 형태인지 확인하여 Optional을 반환하지만 swift macro를 사용하면 compile time에 해당 string이 유효한 URL의 형태인지 파악이 가능 URLMacro의 목적 잘못된 URL 형태의 문자열로 URL을 초기화할 때 컴파일 타임에 알 수 있도록 제공 URLMacro 구현 swift macro 프로젝트 생성 방법은 이전 포스팅 글 참고 attached 매크로와 freestanding 매크로 중에 URLMacro는 독립적으로 연산자처럼 사용되는 freestanding 매크로이며 expre..
swift-syntax 오픈소스 SwiftSyntax는 Swift 소스 코드를 parsing, inspecting, generating, transforming하기 위한 Swift 라이브러리 (git repo) 애플에서는 Swift Document와 별개로 SwiftSyntax 문서도 관리하여 공개 (SwiftSyntax 관련 문서) SwiftSyntax Documentation – Swift Package Index swiftpackageindex.com SwiftSyntax는 단어 그대로 Swift를 Syntax (구문) 별로 tree 자료구조 형태로 표현한 것을 의미 tree 자료구조 형태로 표현하여, parse, inspect, generate, transform를 사용하여 Swift Souce ..
Swift Macro 시작 Xcode 15 Beta 이상, 스위프트 5.9이상에서 Xcode -> New -> Package하여 Swift Macro 생성하면 아래처럼 3가지의 파일이 생성 (프로젝트 명을 "MySample"로 생성) main.swift MySample.swift MySampleMacro.swift 지난 포스팅 글에서 알아본 것은 main.swift, MySample.swift파일 main.swift: 정의한 매크로를 테스트하는 파일 MySample.swift: 직접 정의한 매크로 로직을 외부에서 사용할 수 있도록 인터페이스를 맞춰주는 파일 (구체적인 내용은 이전 포스팅 글 참고) MySampleMacro.swift은 매크로 로직이 들어있는 핵심적인 파일 Swift Macro 구현 방법 ..
Swift Macro 반복되는 코드 부분의 Boilerplate를 줄이기 위한 목적으로 활용 매크로가 수행되는 방법 한 예로 Swift 패키지 플렛폼의 #stringify 매크로가 호출되면, Swift Compiler는 해당 매크로에 대한 구현이 있는 Compiler plugin으로 해당 매크로를 달라는 형태로 요청 Compiler plugin은 보안 sandbox 별도의 프로세스로 실행 Compiler plugin은 매크로 사용을 처리하고 매크로에 의해 생성된 새로운 코드 조각인 "expansion"을 반환 Swift compiler에서 expansion을 받으면 Swift compiler가 expansion을 프로그램에 추가하고 코드의 확장을 함께 컴파일 (Swift Macro 관련 자세한 개념은 ..
Swift Macro는 2가지 타입 독립형(Freestanding) 매크로: #(샾) 키워드로 시작, 다른 코드에 영향을 주지 않는 코드 ex) #function은 독립형 매크로 final class MyView: UIView { init() { super.init(frame: .zero) } @available(*, unavailable) required init?(coder: NSCoder) { fatalError("\(#function) not implemented") } } 첨부형(Attached) 매크로: @(엣) 키워드로 시작, 다른 코드에 영향을 주는 코드 ex) struct 위에 wrapStoredProperties라는 매크로를 붙여서 x property에 영향을 주는 것 // https:..