본문 바로가기

Programming

(140)
iOS Framework에서 전처리문(#ifdef) 등록하기 iOS Framework 제작 시 전처리문(Preprocessor)을 통해서 빌드시점에 다른 결과를 내고 싶을때가 있습니다.대표적인 것이 #if DEBUG 입니다.#if DEBUGprint("is debug mode")#elseprint("release mode")#endif디버그 모드는 Xcode 생성 시 전처리문에 이미 등록돼 있기 때문에 별다른 처리 없이도 바로 사용가능합니다.그렇다면 별도의 전처리문을 등록하고 싶을때는 어떻게 처리해야야 할까요아래와 같은 방법을 통해 설정 할 수 있습니다.Framework를 생성Build Settings로 이동Preprocessor Macros > 전처리문 입력여기서는 MY_FLAG라는 이름으로 등록했습니다.만약 DEBUG모드에서만 필요하면 DEBUG에만 추가, 만..
swift 주석 관련 공식 문서 (Swift Markup Formatting Reference) https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html#//apple_ref/doc/uid/TP40016497-CH2-SW1
M1 Mac에서 cocoapods 설치하는 방법 설치방법 sudo gem install -n /usr/local/bin cocoapods 특정버전을 설치하고 싶은 경우 sudo gem install -n /usr/local/bin cocoapods -v 1.11.3 삭제 방법 sudo gem uninstall -n /usr/local/bin cocoapods
MVVM+Router https://github.com/alinradut/MVVMR GitHub - alinradut/MVVMR: MVVM + Router implementation for Swift. MVVM + Router implementation for Swift. Contribute to alinradut/MVVMR development by creating an account on GitHub. github.com
무려 6년만에 Mentions 오픈소스 라이브러리 업데이트 기념(?) 회고 예전에 2016~ 2017년쯤 으로 기억하는데요, 당시 팀에서 SNS 관련 기능을 한참 제작중이였었어요 인스타나 페이스북 처럼 댓글에 상대방을 소환하는 요구사항이 추가로 들어와서 기능 개발이 필요한 상황이였어요. 처음에는, 크게 생각 안하고 Github에 비슷한 기능이 있는 오픈소스가 있겠지? 하는 생각에 한참을 찾아봤는데 딱 원하는 기능의 오픈소스가 존재하지 않았었어요ㅠㅠ (설마 진짜 존재하지 않을 줄은...) 이왕 이렇게 된거 어차피 계속 쓸 기능인데 이참에 한번 직접 제작해보자, 이왕이면 오픈소스로 제작해보는게 어떨까? 싶어 컴펙트한 기능만 넣어서 UITextView기반의 상대방을 소환할 수 있는 Mentions라는 오픈소스를 제작했었습니다. GitHub - magicmon/Mentions: An ..
[SwiftUI] 애플에서 제공하는 LazyVGrid 구현 예제 SwiftUI는 애플에서 샘플까지 제공해주고 있어서, 구현하는데 많은 도움이 되곤 합니다. 최근에 GridView를 통한 UI 구현할일이 있어 가이드 문서 살펴보니, 역시나 애플에서 친절하게 방법을 제공해 주고 있었습니다. 예제에서 소개한 방법은 이모지를 유니코드와 이모지 아이콘을 표시하는 방법을 LazyVGrid를 통해 설명한 문서입니다. https://developer.apple.com/documentation/swiftui/lazyvgrid LazyVGrid | Apple Developer Documentation A container view that arranges its child views in a grid that grows vertically, creating items only as n..
[Swift] 취소 가능한 Task를 설정하는 방법 (feat. AnyCancelTaskBag) Task를 여러개 등록한 Class가 있다고 가정할때, 이들의 작업이 모두 완료 되기 전에 Class를 닫아야할 경우가 생깁니다. 이때 진행중인 작업을 즉시 완료 하고, 메모리에서 해제하고 싶을 때가 있는데요 Combine은 .store를 통해 여러개의 subject를 등록하고 Class해제 시점에 같이 해제 시켜줄 수 있는데요 class AnyClass { private var subject = PassthroughSubject() private var cancellables: [AnyCancellable] = [] init() { subject .sink { [weak self] text in guard let self = self else { return } }.store(in: &self.canc..
[SwiftUI] @StateObject 또는 @ObservedObject 차이점 SwiftUI에서 MVVM형태의 코드를 작성하려고 할때 아래와 같은 방식으로 대부분 사용할텐데요 class TestViewModel: ObservableObject { @Published var name: String? } struct TestView: View { @ObservedObject var viewModel = TestViewModel() var body: some View { Text(viewModel.name) } } ViewModel의 Property Wrapper에는 아래와 같이 @StateObject 또는 @ObservedObject를 지정할 수 있습니다. @StateObject var viewModel = TestViewModel() @ObservedObject var viewMod..

반응형