본문 바로가기

전체 글158

[Combine] Cancellable이란 element들을 방출하는 스트림을 다 사용했다면 cancel() 해줘야 자원이 dealloc 될 수 있는데요. 즉 이름 그대로 cancellation(취소)를 위한 프로토콜입니다. 만약 cancel()을 호출하지 않으면 어떻게 될까요 ? viewController의 deinit()이 호출되고 나도 스트림이 살아있기 때문에 값을 방출하게 됩니다. deinit { print("ViewController deinit") } let publisher = [1, 2, 3].publisher publisher .map { $0 * 2 } .sink { value in print("\(value)") } //ViewController deinit //2 //4 //6 스트림이 살아있다면 Timer, network.. 2023. 4. 17.
[Combine] Scheduler란 무려 1년만의 combine 글 작성.... 이내요....ㅎ 오늘은 이러쿵 저러쿵 공부를 하던 와중 combine이 머였더라 .. ㅎ 하고 복습을 하게 되었고 Scheduler 정리를 드디어 하려구 합니다 Scheduler closure의 실행 시기와 방법을 정의하는 프로토콜 그렇습니다. scheduler도 프로토콜이네요 ! protocol Scheduler 공식문서 Overview를 보면 You can use a scheduler to execute code as soon as possible, or after a future date. Individual scheduler implementations use whatever time-keeping system makes sense for them. S.. 2023. 4. 16.
[WWDC 2021] Meet AsyncSequence 한마디로 요약하자면 sequence protocol에 async 기능을 가능하게 한 protocol async/ await 키워드를 사용해 비동기를 좀 더 편리하게 다루게 했는데 collection type에 대해 우리는 for, while 같은 sequence 루프를 많이 사용한단 말이지 ? ㅇㅋㅇㅋ 이에 대한 async도 만들겠음 해서 만들어진 프로토콜 --> AsyncSequence 즉 sequence를 비동기적으로 만들겠다는 것만 다릅니다 세션에서도 sequence를 알고 있다면 이미 asynceSequence를 아는것과 다름이 없다고 언급하고 있는데요 세션 내용을 정리해봅시다. asyncSequence를 사용한 코드는 위와 같습니다. 코드를 보면 만들어진 url의 lines에 대해 첫번째 줄을 .. 2022. 12. 18.
[WWDC 2021] Make blazing fast lists and collection views 전에 정리해둔 글인데 .. advances in collectionview layout을 보기 전에 개선된 collectionView lifecycle를 복습하고자 글을 쓰게 되었다. 이번 2022 wwdc 뭐가 나올지 정말 궁금하다 ..! https://developer.apple.com/videos/play/wwdc2021/10252/?time=1251 Make blazing fast lists and collection views - WWDC21 - Videos - Apple Developer Build consistently smooth scrolling list and collection views: Explore the lifecycle of a cell and learn how to appl.. 2022. 5. 27.
[WWDC 2021] Your guide to keyboard layout 오늘은 keyboard에 관한 영상을 살펴보았습니다. 사실 처음 영상 제목을 보았을때 키보드 ?? 하 뭔가 끌린다 .. 싶었습니다 ㅎㅎ 창업팀에서 키보드 올리고, 내리고 할때 레이아웃 변경 코드가 이렇게 하는거 맞나 ..? 야매 같은데 하는 찜찜함이 있었기 때문입니다. 그래서 iOS 15에서 어떤 변경 사항이 있는지 알아보고자 영상을 보고 정리하게 되었습니다 !! https://developer.apple.com/videos/play/wwdc2021/10259/ Your guide to keyboard layout - WWDC21 - Videos - Apple Developer Discover how you can use the Keyboard Layout Guide to manage how keyboa.. 2022. 5. 26.
[WWDC 2021] Protect mutable state with Swift actors 이번 세션에는 await/async 에 이어 새롭게 등장한 Actor 타입에 대해 자세히 소개합니다 !! https://developer.apple.com/videos/play/wwdc2021/10133/ Protect mutable state with Swift actors - WWDC21 - Videos - Apple Developer Data races occur when two separate threads concurrently access the same mutable state. They are trivial to construct, but are notoriously... developer.apple.com Actor in swift 첫번째로, actor가 등장하게 된 이유에 대해 소개합니.. 2022. 5. 24.
[WWDC 2021] Meet async/await in Swift What's new in Swift 영상을 보다가 async/ await 문법을 새롭게 소개하더군요 ..! doc를 통해 먼저 정리했던 적이 있는데 영상을 보면서 복습하는 겸, 다시 한번 이해가 잘 안간 actor 부분을 다시 공부해보려구 합니다 !! 아래 비디오와 doc를 보는 것을 강력히 추천드립니다요 https://developer.apple.com/videos/play/wwdc2021/10132 Meet async/await in Swift - WWDC21 - Videos - Apple Developer Swift now supports asynchronous functions — a pattern commonly known as async/await. Discover how the new syn.. 2022. 5. 17.
[RxSwift] Transforming Operator (map, flatMap, scan, reduce) 오늘은 observable 데이터를 가공하는 operator에 대해 살펴보겠습니다. 1) Map Observerble에 의해 방출되는 아이템들에 대해 각각 함수를 적용하여 변환합니다. map을 사용하는 예시입니다. let ob = Observable.of("1", "2", "3", "4") ob.map { Int($0)! } .subscribe(onNext: { item in print(item) }).disposed(by: disposeBag) //출력 //1 //2 //3 //4 string타입의 observable을 map operator를 통해 모든 item을 Int 타입으로 캐스팅 해주었습니다. 2) FlatMap flatMap은 map과는 다르게 스트림에서 방출되는 아이템들을 다른 observ.. 2022. 5. 16.
[백준] Swift AC implementation, 문자열 문제 : https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 풀이 : 명령어 R과 D에 대해 각각 뒤집기, 첫 문자를 버리는 것을 메소드를 적용하면 된다. 하지만 R에 대해 문자열 reverse를 적용하면 시간복잡도가 O(n)이 걸리므로 * 근데 queue 자료구조를 직접 구현할땐 reverse가 O(1)이라고 했는데 잘 모르겠다 .. R 명령어가 등장할때, isReverse.toggle()로 뒤집혔는지 아닌지를 프로퍼티로 저장한다. 그리고 D명령어를 수행할때 역시 removeFirst()는 시간복잡도가.. 2022. 5. 13.
[프로그래머스] Swift 자물쇠와 열쇠 2020 kakao 문제 : https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr swift 코드 : // // main.swift // SOMA👩🏻‍💻 // // Created by JoSoJeong on 2022/05/12. // import Foundation func rotation(_ arr: [[Int]]) -> [[Int]] { // 시계 방향으로 90도 회전 var resultArr = Array(repeating: Array(repeating: 0, count: ar.. 2022. 5. 13.
[WWDC 2020] Advances in diffable data sources 2021 DiffableDataSource의 개선 사항을 보기 전, 관련 영상이 2020년도꺼도 있길래 먼저 보고 가자는 생각에 정리하게 되었다. https://developer.apple.com/videos/play/wwdc2020/10045 Advances in diffable data sources - WWDC20 - Videos - Apple Developer Diffable data sources dramatically simplify the work involved in managing and updating collection and table views to create dynamic and... developer.apple.com iOS 14부터 Outline Style UI가 추가되었습.. 2022. 5. 12.
[WWDC 2019] Advances in UI Data Sources https://developer.apple.com/videos/play/wwdc2021/10252/ Make blazing fast lists and collection views - WWDC21 - Videos - Apple Developer Build consistently smooth scrolling list and collection views: Explore the lifecycle of a cell and learn how to apply that knowledge to... developer.apple.com 를 읽기 전에 DiffableDataSource에 대해 이해하고자 Advances in UI Data Sources를 먼저 보게 되었습니다. 공부해보고 싶었던 내용이라 쭉 흐름을 정리.. 2022. 5. 10.
[RxSwift] Filtering Operator (distinctUntilChanged) DistinctUntilChanged 연달아 같은 값이 오면 생략한다. Observable.of(1, 2, 2, 1, 3) .distinctUntilChanged() .subscribe(onNext: { print($0) }) .disposed(by: disposeBag) /* Prints : 1 2 1 3 /* 2022. 5. 10.
[RxSwift] Error Handling Operator Network Error Handling에 대해 알아보다가 관련 operator들을 정리해보려구 합니다. 참고 : https://okanghoon.medium.com/rxswift-5-error-handling-example-9f15176d11fc RxSwift #5 — Error Handling & Example 이번에는 RxSwift에서 어떻게 Error Handling 을 하는지 앱에서 흔히 발생하는 에러 예제들을 통해 알아보려고 한다. okanghoon.medium.com RxSwift에서는 Error Handling을 하는데 다음과 같은 방법이 있습니다. 1. Catch 특정 값으로 error 복구 2. Retry 재시도 3. materialize / dematerialize : Sequence.. 2022. 5. 10.
[아키텍쳐] RIBs란 RIBs란 우버에서 만든 아키텍쳐입니다. 사실 작년에 튜토리얼 1을 조금 따라해보긴했는데 .. 되게 복잡복잡했던 기억만 남아있는거 같아요 ... 그래서 RIBs를 이루는 기본 개념에 대해 튜토리얼2까지 보았겠다 다시한번 정리 해보려고 합니다 이번에 프로젝트때 꼭 적용해보려구요 !! What are RIBs For? RIBs는 우버의 크로스 플랫폼 아키텍쳐 프레임워크입니다. RIBs는 많이 얽혀있는 state를 포함하고 있는 큰 모바일 앱을 위해 디자인 되었습니다. 우버를 위한 이 프레임워크를 디자인 할때 아리 원칙을 준수하고자 하였습니다. Encourage Cross-Platform Collaboration : 우리 앱의 복잡한 부분은 대부분 iOS와 Android에서 비슷합니다. RIBs는 Androi.. 2022. 5. 6.
[Combine] ConnectablePublisher ConnectablePublisher connecting, canceling의 명시적인 의미를 가진 publisher subject와 같이 publisher의 일부입니다. element를 생산하기 전 추가적인 configuration, setup을 수행할 필요가 있을때, ConnectablePublisher를 사용합니다. connect() 메소드 호출 전, publisher는 어떤 element도 생산하지 않습니다. makeConnectable()을 사용하여 ConnectablePublisher을 생성합니다. private func connectablePublisher(){ let publisher = ["hi", "hello"].publisher.makeConnectable() let cancellab.. 2022. 5. 3.
[프로그래머스] Swift 파괴되지 않은 건물 누적합 문제 : https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 참고 : https://tech.kakao.com/2022/01/14/2022-kakao-recruitment-round-1/#%EB%AC%B8%EC%A0%9C-6-%ED%8C%8C%EA%B4%B4%.. 2022. 5. 2.
[프로그래머스] Swift 오픈채팅방 2019 kakao 문제 : https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 분석 : 확실히 swift는 c++보다 문자열 파싱에 있어서 유용한것 같다 ! 그래서 아이디어만 생각나면 구현하기 수월하다는 생각을 다시한번 하게 되었다. swift 짱 ..👍 이 문제는 문자열 파싱 및 구현 문제로, 오픈 채팅방에 들어왔을때, 나갔을때, 이름을 변경했을때의 명령어를 처리해주면 된다. 기존 톡방 참여자가 이름을 변경하고 다시 들어오게 되.. 2022. 5. 2.
[RxSwift] Schedular란 (subscribeOn, observeOn) 이름은 조금 다르지만 어느 곳에서 작업 할지(main, global) 실행 흐름의 위치를 지정해주는 것을 말합니다. 기본 swift에서는 thread 작업을 비동기적으로 처리하기 위해 GCD를 사용했었습니다. RxSwift에서 GCD에 대응되는 개념이 Schedular라고 할 수 있습니다. Schedular를 통해 Observable을 어디서 생성할지, Observer가 어디서 관찰할지 지정해 줄 수 있습니다. observeOn 과 subscribeOn은 스케줄러로 작동되는 대표적인 두 연산자입니다. observeOn과 subscribeOn 둘의 차이를 명확하게 구분하는데 있어 http://rx-marin.com/post/observeon-vs-subscribeon/ observeOn vs. subscr.. 2022. 4. 29.
[아키텍쳐] ReactorKit이란 배울게 정말 많다 ..! 하나 하나 아키텍쳐들을 알아가면서 MVx 외의 앱 아키텍쳐 개념이 점점 구체화되는거 같다. 이번에는 reactorKit 도큐먼트를 읽어보고 다른 아키텍쳐와 어떻게 다른지 알아보려구 한다 !! 참고 : https://github.com/ReactorKit/ReactorKit GitHub - ReactorKit/ReactorKit: A library for reactive and unidirectional Swift applications A library for reactive and unidirectional Swift applications - GitHub - ReactorKit/ReactorKit: A library for reactive and unidirectional S.. 2022. 4. 24.