DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead CocoaPods 깃허브의 이슈를 보니 Xcode 15.0(15A240d) 에서 iOS 17 시뮬레이터를 사용할 수 있게되면서 위의 에러를 겪고 있었습니다. https://github.com/CocoaPods/CocoaPods/issues/12012 CocoaPods 1.13.0 버전의 릴리즈를 확인하니 버그가 수정되었습니다. (출처 : https://github.com/CocoaPods/CocoaPods/releases/tag/1.13.0) 버전을 업데이트하여 해결하였습니다. // 최신 버전으로 업데이트 gem install cocoapod..
✅ RxSwift 는 mvvm 과 함께 쓰기로 유명한데 그 이유를 알아보자 리액티브 프로그래밍은 코드 업데이트가 변경사항을 자동으로 반영하도록 설정할 수 있다면 좋겠다는 생각에서 출발한 것입니다. 그래서 데이터 스트림과 변경 사항의 전파를 중심으로 하는 비동기 프로그래밍이라고 정리할 수 있습니다. 이처럼 리액티브 프로그래밍을 사용하는 이유는 특정 상태를 유지하는 것보다 로직에 조금 더 집중할 수 있기 때문입니다. 이런 리액티브 프로그래밍의 사용을 할 수 있는 오픈 소스 라이브러리가 ReactiveX 이고, Swift 와 함께 사용할 수 있는 것이 바로 RxSwift 입니다. 그리고 RxSwift 는 mvvm 패턴에서 데이터 바인딩의 대표적인 방법으로 소개됩니다. mvvm 패턴에서는 view model 을..
"인스턴스가 계속 사용되야 하기 때문에 메모리에 남아있어야 한다." 라는 명분을 주는 것이 Strong Reference(강한 참조)입니다. 레퍼런스 카운트가 증가될 때는 강한 참조인 경우에 해당합니다. 이 강한 참조는 별도의 식별자를 명시하지 않으면 강한 참조로 여겨집니다. 이때 어떤 상황에 대해서 클래스의 인스턴스의 사용이 끝났음에도 불구하고 레퍼런스 카운트가 0이 되지 않아 메모리에서 사라지지 않는 memory leak 이 발생하는 것을 강한참조 순환(strong reference cycle)이다. 언제 발생하나요? 두 개 이상의 인스턴스가 서로를 강하게 참조하여 발생하게 된다. 변수에 인스턴스를 할당하며 생기는 레퍼런스 카운트 이외에 서로가 참조하면서 레퍼런스 카운트가 추가로 증가. nil 을 할..
상황 fastlane 으로 다음의 Info 파일이 수정되었습니다. MARKETING_VERSION 환경변수에 영향을 받는 것이 상수로 수정되었습니다. 그리고 이 환경변수는 프로젝트의 버전으로 설정되고 있습니다. 프로젝트의 버전은 다음의 Info 파일에 영향을 주고 있었습니다. 그래서 Bundle version string 과 Bundle version 의 차이에 대해서 찾아보았습니다. 공식문서에서 찾아보니 다음과 같았습니다. https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring https://developer.apple.com/documentation/bundl..
내용 RxSwift 6(2021.01.01) 에서 추가된 withUnretained 와 이를 대체하기 위해 RxSwift 6.1(2021.02.11) 에서 추가된 subscribe(with:onNext:onError:onCompleted:onDisposed:) 에 대해서 알아보자. 📌 들어가기 전 withUnretained 는 RxSwiftExt 에서 만든 operator 이지만 RxSwift 6 부터 추가되었습니다. 간단하게 먼저 언급하자면 클로저에서 retain cycle 을 피하고자 [weak self] 를 사용하는 것 대신 withUnretained operator 를 사용할 수 있습니다. 그런데 RxSwift 6.1 에서 다음과 같은 api 를 추가되었습니다.(출처: https://github...
Reference / Value / Protocol Type 의 Extension 할 경우 dispatch 방법이 달라지기도 합니다. 알아봅시다! value type 의 extension 에서 구현한 메소드는 상속 가능성이 없기 때문에 static dispatch 로 동작. reference type 의 extension 에서 구현한 메소드는 서브 클래스에서 재정의가 불가능하다.(이를 위해서는 @objc 를 통해 해결할 수 있다.) 그래서 extension 의 메소드가 호출되는 것이 보장되기 때문에 static dispatch 로 동작. protocol 의 extension 에서 구현한 메소드는 두 가지로 나뉜다. 1.extension 에 default 구현을 해둔 경우는 해당 메소드에 대한 구현이 필수..
내용 TestFlight 와 릴리즈 앱 자동 배포를 위한 fastlane 설정 fastlane code signing 방법 중 match 방식에서 fastlane 의 lane 설정 하나의 개발 팀으로 multiple target 에 대한 code singing 적용, slack 연동 목표 ✅ 들어가기 전, fastlane 에서는 cert and sigh 방법과 match 방법을 지원합니다. 이 둘은 방법이 다르기 때문에 lane 또한 다르게 작성될 수 밖에 없습니다. cert and sigh 방법은 로컬에 certificate 와 private key(cert 사용), provisioning profile 을 확인(sigh 사용)하여 없다면 다운받고, 생성이 필요하다면 개발자 계정에 생성하는 get_ce..
내용 위젯에서 Intent 를 사용하기위한 IntentHandler 에서 defaultparameter type 메서드로 위젯을 추가할 때 기본값을 설정하는 메서드를 다루겠습니다. 🚨 비동기 서버 통신 작업 이후에 결과를 가지고 함수를 리턴하는 메서드를 구현해야 합니다. 그래서 비동기적인 서버통신 작업의 종료 시점 이후에 처리해야 했습니다. // 위젯 추가할때 호출. 기본값 설정. // ✅ 서버통신 후에 가장 첫번째 값을 기본값으로 리턴. // 서버통신 후에 값이 없다면 기본값으로 nil 리턴. func defaultMyCard(for intent: MyCardIntent) -> MyCard? { var myCard: MyCard? // ✅ DispatchGroup 사용. let group = Dispa..
- Notification
- github
- CloneCoding
- Widget
- async/await
- urlsession
- WWDC22
- rxswift
- Protocol
- UserDefaults
- WWDC
- projectsetting
- configurable widget
- APNS
- MOYA
- WidgetKit
- YPImagePicker
- 서버통신
- SwiftUI
- OpenSourceLibrary
- watchOS
- 2022 KAKAO TECH INTERNSHIP
- Objective-C
- MVVM
- RxCocoa
- containerBackground
- IOS
- Swift
- Algorithm
- Firebase
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday