일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- widgetkit
- 네트워크
- SwiftUI
- 대외활동
- 멋사
- 1일1알골
- Protocol
- 운영체제
- 후기
- dispatchqueue
- 위젯킷
- 스유
- 백준
- TCA
- c++
- 영남대
- Swift
- 문법
- spritekit
- composable architecture
- uikit
- swift concurrency
- cs
- 리액트
- 웹
- 스위프트
- widget
- 알고리즘
- 컴퓨터그래픽스
- 멋쟁이사자처럼
- Today
- Total
목록앱 (110)
맛동산이
💡 TCA는 단방향 아키텍쳐로, 상태관리가 용이하고, 데이터 흐름이 명확하게 정의되어 있기 때문에 단방향으로 이해하기 쉽습니다.TCA 의 장점모듈화: TCA는 애플리케이션을 작은 모듈로 나누어 관리할 수 있도록 도와줍니다. 각 모듈은 독립적으로 테스트하고, 유지보수할 수 있어 코드의 가독성과 재사용성이 향상됩니다.예측 가능성: 상태의 변화가 명확하게 정의되어 있어, 애플리케이션의 동작을 예측하기 쉽습니다. 모든 상태 변화는 액션을 통해 이루어지며, 이는 디버깅과 유지보수를 용이하게 만듭니다.테스트 용이성: TCA는 테스트를 쉽게 할 수 있도록 설계되었습니다. 상태, 액션, 리듀서를 독립적으로 테스트할 수 있어, 각 모듈의 동작을 검증하는 데 유리합니다.상태 관리: TCA는 중앙 집중식 상태 관리를 제공..
[Swift] async / await & concurrency기본적으로 이전에는 async await을 api 통신에서만 사용한다고 생각을 했지만, 최근에 asnyc await을 알게되면서, 해당 코드를 통해서 delegate나, completionHandler방식으로 처리되고 있던것 또한 i/o 입력에 의한 비동기 처리기 때문에 이를 async 스타일로 리팩토링이 가능하다는것을 알게되어 정리해보려고 한다.먼저 async awai는 예전에 정리한적이 있기 때문에 넘어가도록 하고async 와 await을 연결해주는 continuation 이라는 개념을 최근에 알게되었기 때문에 정리해보자!What’s continuation?동기 코드와 비동기 코드를 이어주는 인터페이스이다.기존에는 delegate와 com..
DecodableDecoder는 JSON type으로 오는 데이터를 네이티브한 포멧과 매핑이 가능하도록 하는 프로토콜이다.보통 Codable이 Encodable, Decodable 두개를 타입엘리어싱 하기 때문에 Codable만 채택해도 큰 문제는 없다.CodingKey실제로 RESTFUL API와 실제로 내부에서 사용하는 데이터의 네이밍이 다른경우가 많은데 이를 코딩키를 통해서 매핑해줄수 있다.struct DecodingModel: Decoding { let userName: String let userAge: Int enum CodingKeys: String, CodingKey { case userName = "user_name" case userAge = "user_age" ..
transform()transform() transforms each stream. There are three transform() functions:func transform(action: Observable) -> Observablefunc transform(mutation: Observable) -> Observablefunc transform(state: Observable) -> ObservableImplement these methods to transform and combine with other observable streams. For example, transform(mutation:) is the best place for combining a global event stream ..
위젯 동작과, 내용에 관해서는 이전 글을 참고하시길 바랍니다.간단하게 설명하자면 위젯에서는EntryProviderWidgetView로 크게 나누게 되며, Provider가 Entry를 Timeline에 맞춰서 새로 생성하여 배열에 담고, 해당 타임라인 시간에 맞춰서 entry배열에 담긴 화면을 그리는것이 위젯의 기본 동작이다.iOS 17버전 이전에서는 위젯에서는 위젯을 눌러서 앱을 실행하는 동작 이외에는 어떠한 버튼 동작이 불가능했다.하지만 iOS17 이상에서는 위젯에 버튼액션이 가능한데 이를 정리해보고자 한다.AppIntent2023 button 을 이해하기 위해서는 우선 appIntent라는것에 대해서 이해해야한다.간략하게 말하자면, appIntent는 시스템에서 앱의 기능이나 컨텐츠를 사용할수 있도..
MKWebView란기존의 웹뷰는 UIWebView를 사용했지만, 현재는 deprecated되었다.따라서 WKWebView를 통해서 iOS에서는 웹뷰를 로딩할수 있다.WKWebView는 javascript를 통해서 네트워킹을 할수 있으며, 이는 비동기적으로 동작하게 된다.사전에 필요한 개념들을 미리 정리해보자!MKWebViewDataStore?MKWebView는 쿠키, 디스크 그리고 메모리캐시등 다양한 웹뷰의 데이터를 저장하고, 처리하는 클래스이다.즉 해당 클래스를 통해서웹사이트에서 사용하는 쿠키 관리웹사이트가 저장하는 데이터 타입 확인웹사이트에 저장된 데이터 제거등을 할수 있다.실제로 캐시를 제거하는 코드WKWebsiteDataStore.default().removeData(ofTypes:[WKWebsi..
처음에 어플리케이션을 만들때, 콜렉션뷰에서 cell 내부의 버튼을 통해서 현재 cell의 이미지를 홈뷰 이미지뷰에 넣어주기 위해서 cell 내부에는 클로저를, item controller에는 delegate를 사용해서 homeView에 이벤트를 넘겨주었는데 작동하지 않았다. Notificatin Center 우선 Notification Center은 클래스이다. 그리고 이 Notification Center의 인스턴스는 enables the broadcast of information to registered observers,라는 역할을 하는데, 번역하자면 등록된 옵저버들에게 정보를 전달해주는 역할을 한다는 뜻이다. 노티피케이션 센터는 옵저버 패턴이다. 옵저버란, 스타크래프트에서 프로토스 유닛으로 다른..
: 오토레이아웃을 통한 애니메이션을 주는 방법(constraint를 이용한)에서 layoutifneeded()가 무엇을 뜻하는지 찾다가 공부하게 되었다. Draw cycle이란, ios어플리케이션에서 view가 업데이트 되는, 과정을 의미한다. 이러한 draw cycle을 이해하기 위해서는 우선적으로, ios의 main run loop에 대한 이해를 필요로 한다. Main run loop 이전에도 잠깐 언급되었지만, uiapplication은 ios os 시스템에서 event 큐를 통해서 이벤트를 입력받고 그것을 처리하는 런루프에 의해서 해당 uiapplication객체를 생성, 그 안에서 다양한 이벤트를 처리하여, 해당객체를 리턴해주는 방식으로 작동한다. 그렇다면 런루프란 정확히 무엇을 뜻하는것일까??..
스토리보드를 기준으로 바텀시트를 직접 만들려고 햇는데 잘 안되서, 그냥 외부라이브러리 쓰기로 했다. panmodal 이라는 오픈소스 라이브러리이다. 패키지 매니저를 통해서 해당 오픈소스를 다운받을수 있다. 1. 패키지 매니저를 통해서 다운 https://github.com/slackhq/PanModal.git 다운햇으면 사용할 부분에 당연하게도, import해주자. 2. 모달해줄 뷰컨트롤 만들기 뷰컨트롤러의 종류는 크게 3개가 있다. 뷰 컨트롤러 콜렉션뷰 컨트롤러 테이블뷰 컨트롤러 해당 컨트롤러를 스토리보드에서 만들면된다. 나는 콜렉션뷰로 만들었다. 3. 콜렉션뷰 설정하기 기존의 콜랙션뷰와 동일하게 진행하면 되는데, 처음부터 콜렉션뷰 컨트롤러자체 내부에서 datasource와 delegate가 내장되어있..