일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- error
- Session
- 한글
- IOS
- JPA
- Code
- SwiftUI
- Notification
- stack
- FLUTTER
- Firebase
- rxswift
- window
- Archive
- Swift
- view
- MacOS
- Realm
- geofencing
- 웹뷰
- iOS16
- darkmode
- 개발자
- appstore
- github
- Git
- UIButton
- mac
- Apple
- Xcode
- Today
- Total
목록IOS (175)
EEYatHo 앱 깎는 이야기
개요 사내 프로젝트(UIKit) 에 SwiftUI 적용해보니, Preview 에서 Crash 발생.. 응용 프로그램이 예기치 않게 종료되었습니다. 응용 프로그램을 다시 열려면 다시 열기를 클릭하십시오. 자세한 정보를 보고 Apple에 리포트를 보내려면 리포트를 클릭하십시오. ( 리포트 한 백번한듯.. ) 원인 요약 ( + Solution ) 원인 1. Xcode 의 Swift Package Manager 이 아닌, Tuist 의 Swift Package Manager 처럼. Package를 resolve해서 binary framework로 Firebase SDK를 사용함. 원인 2. FirebaseSDK 를 binary framework 로 사용해서, Build Settings - Linking - Ot..
Moya 에서 네트워크 통신에 접근할 수 있는 방법 2가지 Interceptor Plugin Interceptor #git RequestInterceptor의 구현체를 MoyaProvider.Session 에 넣기 let insterceptor = MyInterceptor() let session = Session(interceptor: insterceptor) let provider = MoyaProvider(session: session) adapt 로 모든 request 에 접근 retry 로 validation 에 실패한 response 에 접근 /// Type that provides both `RequestAdapter` and `RequestRetrier` functionality. publ..
Clean Architecture 개요 여느 다른 아키텍처 패턴들 처럼, 앱을 구성하는 여러 구성요소, 모듈들을 ( UI, ViewModel, Entity, Repository, DB 등 ) 바운더리치고 나눈 것. 바운더리의 기준 자주 변경되는 모듈이, 거의 변경되지 않는 모듈을 의존하도록 하자! + 테스트 용이성.. 등등? 변하지 않는 것을 안쪽으로, 자주 변하는 것을 바깥쪽으로 그림 의존성을 바깥쪽에서 안쪽으로 주입 (바깥쪽이 변경되어도, 안쪽이 변경될 필요 없게. ) ex1. ) DataSource가 API를 써서 데이터를 받든, 로컬 DB의 데이터를 가져오든.. 안쪽의 Repository는 변경되지 않도록. ex2. ) 반대로, 제일 안쪽의 Entity가 변경되었다면, DataSource의 Res..
개요 이번 2023 렛어스고 찍먹톤 행사에, 정말 운이 좋게도, 예비에서 붙어서 참가하게 되었다!! 2023 WWDC 에 나오는 신기술들을 주제로, 6월 10일 하루동안(10~20시) 미니 프로젝트를 진행하는 컨퍼런스다. 행사 전날 팀 메이킹 나 포함 네명이 한 팀으로 팀이 만들어졌고, 팀원으로는 민디고님, 김호세님, 라면먹는 제이지님을 뵙게 되었다. 총 10팀 중에 우리가 1팀(첫번째) 이었다. 디스코드 회의 행사 전날에 디스코드로 미리 모여서 얘기해보자 하셔서 놀랐다. ( 해커톤같은 걸 안해봐서인지, 생각지도 못했다.. ) 야근 후 돌아가서 바로 디스코드로 들어갔다. WWDC 볼륨 워낙이 커서, 다들 미처 다 시청하지 못하셨고, 어떤 신기술을 사용해볼지, 그 기술에 관해 어떤 영상들을 보고 올지만 정..
applicationWillTerminate UIKit > UIApplication.h > applicationWillTerminate 을 가지고 앱 종료 직전을 컨트롤할 수 있음. 해당 메소드가 return 되면, 시스템이 앱을 종료한다. 앱 종료 지연 및 async 작업 applicationWillTerminate 메소드에 sync 코드를 넣으면 다 실행하고 종료되지만, NotificationCenter, API 호출 등의 async 작업은, 미처 실행되기 전에 함수가 종료되서, 동작하지 않는 경우가 발생한다. 이를 방지하기 위해서는 return 을 지연(sleep) 시키면 된다. 문서에 따르면 최대 약 5초까지 지연시킬 수 있다. 코드 /// 해당 함수가 반환되면 시스템이 앱을 즉시 종료. /// ..
권한 작업 Info.plist 에 추가 Privacy - Motion Usage Description 걸음수 데이터 측정을 위해 데이터 접근 권한이 필요합니다. 안하면 crash남 코드 CoreMotion.CMPedometer.queryPedometerData 활용 3초마다 오늘 00시 ~ 현재시간까지의 걸음수를 query import CoreMotion final class CoreMotionService { static let shared = CoreMotionService() private var pedoMeter = CMPedometer() private init() { Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #select..
점진적 배포 ( Release a version update in phases ) 1. 7일 동안, 자동 업데이트를 켜둔 유저에게 점진적으로 업데이트 한다 2. 점진적 배포를 일시중지 할 수 있다. (최대 30일. 일시중지 횟수는 무제한) => 만약 최신 버전에 문제가 발견되었다면, 일시중지 후 핫픽스한 버전을 배포하는 식으로 운용한다. 3. 등차적으로 업데이트하는 게 아니라, 날마다 비율이 정해져있다. 4. Apple ID 를 기준으로 임의로 선정한다. => 복수 기기를 가진 한명의 유저는, 복수 기기에서 같은 결과를 가진다. 5. 신규 유저와 자동 업데이트를 꺼둔 유저는 그냥 최신버전으로 배포된다. Reference Release a version update in phases - Update you..
lazy 단어 뜻 그대로 게으른 변수, 실제로 사용되기 전까지, 메모리에 적재되지 않는다. 생성하는데 비교적 큰 비용이 들고, 잘 사용되지 않는 저장프로퍼티를 선언할 때 사용. 불필요한 메모리 사용을 줄일 수 있다. 초기화시 빈 값을 가지고, 이후 사용될 때 실제 값으로 변경되기 때문에, let 이 아닌 var 만 사용할 수 있다. lazy 저장 프로퍼티는, 같은 스코프 안에 있는 저장 프로퍼티를 사용하여 초기화 할 수 있다. class SomeClass { var storedProperty = "adsadas" lazy var lazyProperty: String = { // ok return storedProperty }() var property: String = { // error return s..