얕게말고 깊게

iOS) RIBs Architecture

https://github.com/uber/RIBs/wiki를 바탕으로 공부한 RIBs에 대해 정리를 하는 글입니다. RIBs란? RIBs는 Uber의 크로스 플랫폼 아키텍쳐 프레임워크입니다. RIBs는 다음과 같은 원칙들을 준수합니다. Encourage Cross-Platform Collaboration 하나의 서비스를 기준으로 볼 때 Android, iOS 모두 개발적인 측면에서 복잡한 부분들은 대체로 비슷합니다. 이 점을 활용하여 RIBs는 Android와 iOS 모두 비슷한 개발 패턴들을 제공합니다. 이는 iOS, Android 팀 모두 하나의 단일 아키텍쳐를 서로 공유할 수 있음을 의미하는데 이를 통해 서로의 비즈니스 로직을 점검해줄 수 있다는 장점이 생깁니다(뭔가 아키텍쳐의 틀을 딱 정해두는 ..

iOS 2022.01.12 0

2021년 회고(이달의 앱, 졸업, 취준)

들어가며 이번 2021년도 역시나 코로나와 함께였다. 내 첫 회고가 2020년인데 지금이 네번째 회고임에도 아직도 코로나와 함께라니.. 올해는 꼭 종식되었으면 좋겠다. 올해는 힘든 순간도 많았지만 이전의 힘든 순간들을 보상받은 날들도 많았던 것 같다. 그게 더 힘을 낼 수 있는 원동력이 되어주었고 그렇게 2021년에도 나름의 성과와 함께 행복한 연말을 보낼 수 있었다. 글의 제목에 써 놓았듯 이번 회고의 키워드는 크게 3가지이다. 이달의 앱, 졸업, 취준 Cherish가 가져다 준 선물, 이달의 앱 꽤 오래된 일이긴 한데, 2021년 9월 15일.. 무려 Apple 가을 이벤트가 열리고 있는 순간에 Cherish 단톡방이 울렸다. 처음엔 좀 안믿겼다. 왜 올라간거지? 싶었고.. 그치만! 우리가 그만큼 열..

회고 2022.01.31 2

iOS) PinLayout

https://github.com/layoutBox/PinLayout 을 참고했습니다. PinLayout Luc Dion이라는 개발자가 만든 프레임워크이다. layoutBox라는 Swift를 사용한 layout 오픈 소스 organization 관리자인 이분은 PinLayout뿐만 아니라 FlexLayout을 만든 사람이기도 하다. PinLayout은 기본적으로 AutoLayout을 사용하지 않고 레이아웃을 구성할 수 있도록 도와주는 프레임워크이다. AutoLayout을 사용하지 않음으로서 렌더링 성능이 훨씬 빠르다고 한다(8~12배). PinLayout은 수동으로 view를 layout하는데 때문에 Manual Layout과 속도가 비슷하거나 더 빠르다. SnapKit이 AutoLayout을 좀 더 직..

iOS 2022.02.02 0

iOS) URLSession + NSCache 실습(2) - NSCache

저번 글에 이어서 오늘은 자주 사용하는 이미지 캐싱 라이브러리인 Kingfisher의 Base인 NSCache에 대해서 알아보도록 할게요! Caching을 하는 이유 예를들어, 서버에서 어떤 API를 호출해서 이미지를 받아온다고 한다면 우리는 그 이미지 처리를 위해 비동기 코드를 작성하곤 합니다. 가장 주된 이유는 이미지를 받아오는데에 걸리는 시간이 이미지 크기에 따라 엄청 오래걸릴 수 있기 때문이죠! 같은 이유로 사용자가 방금 불러온 이미지인데 잠깐 나갔다가 들어왔을 때 다시 API를 호출하고 이미지를 불러올 때 같은 시간이 소요된다면 비효율적이겠죠? 이미지의 크기가 크다면 클수록 더더욱 그럴 것 같아요. 그래서 우리는 기기 내부에 존재하는 임시 저장소인 Cache에 이미 불러온 이미지를 넣어두고 빠르..

iOS 2021.09.15 0

iOS) URLSession + NSCache 실습(2) - NSCache

저번 글에 이어서 오늘은 자주 사용하는 이미지 캐싱 라이브러리인 Kingfisher의 Base인 NSCache에 대해서 알아보도록 할게요! Caching을 하는 이유 예를들어, 서버에서 어떤 API를 호출해서 이미지를 받아온다고 한다면 우리는 그 이미지 처리를 위해 비동기 코드를 작성하곤 합니다. 가장 주된 이유는 이미지를 받아오는데에 걸리는 시간이 이미지 크기에 따라 엄청 오래걸릴 수 있기 때문이죠! 같은 이유로 사용자가 방금 불러온 이미지인데 잠깐 나갔다가 들어왔을 때 다시 API를 호출하고 이미지를 불러올 때 같은 시간이 소요된다면 비효율적이겠죠? 이미지의 크기가 크다면 클수록 더더욱 그럴 것 같아요. 그래서 우리는 기기 내부에 존재하는 임시 저장소인 Cache에 이미 불러온 이미지를 넣어두고 빠르..

iOS 2021.09.15 0

iOS) RIBs에서의 ViewDidLoad() 호출 시점 - init()에서 ViewDidLoad()가 호출되는 것에 관하여

들어가며 요즘 RIBs라는 아키텍쳐를 사용해서 개발을 하고 있다. RIBs에는 Router, Interactor, Builder, View, (Presenter)라는 개념이 등장한다. VIPER패턴에 익숙한 사람이라면 이런 개념들 또한 익숙할 것이다. 무튼 주제와 가까워져 보자면, 이슈사항은 RIBs와 Reacorkit을 함께 사용하면서 발생했다. RIBs에서 ViewDidLoad(), didBecomeActive()의 호출 순서에 대한 고찰 그리고 나의 이슈트래킹 ReactorKit을 사용하기 위해서는 View에서도 ReactorKit의 존재를 알아야했는데, 이를 막기 위해 RIBs의 PresentableListener를 사용하였다. protocol TransactionDetailPresentableL..

iOS 2022.03.21 0

iOS) PinLayout

https://github.com/layoutBox/PinLayout 을 참고했습니다. PinLayout Luc Dion이라는 개발자가 만든 프레임워크이다. layoutBox라는 Swift를 사용한 layout 오픈 소스 organization 관리자인 이분은 PinLayout뿐만 아니라 FlexLayout을 만든 사람이기도 하다. PinLayout은 기본적으로 AutoLayout을 사용하지 않고 레이아웃을 구성할 수 있도록 도와주는 프레임워크이다. AutoLayout을 사용하지 않음으로서 렌더링 성능이 훨씬 빠르다고 한다(8~12배). PinLayout은 수동으로 view를 layout하는데 때문에 Manual Layout과 속도가 비슷하거나 더 빠르다. SnapKit이 AutoLayout을 좀 더 직..

iOS 2022.02.02 0

2021년 회고(이달의 앱, 졸업, 취준)

들어가며 이번 2021년도 역시나 코로나와 함께였다. 내 첫 회고가 2020년인데 지금이 네번째 회고임에도 아직도 코로나와 함께라니.. 올해는 꼭 종식되었으면 좋겠다. 올해는 힘든 순간도 많았지만 이전의 힘든 순간들을 보상받은 날들도 많았던 것 같다. 그게 더 힘을 낼 수 있는 원동력이 되어주었고 그렇게 2021년에도 나름의 성과와 함께 행복한 연말을 보낼 수 있었다. 글의 제목에 써 놓았듯 이번 회고의 키워드는 크게 3가지이다. 이달의 앱, 졸업, 취준 Cherish가 가져다 준 선물, 이달의 앱 꽤 오래된 일이긴 한데, 2021년 9월 15일.. 무려 Apple 가을 이벤트가 열리고 있는 순간에 Cherish 단톡방이 울렸다. 처음엔 좀 안믿겼다. 왜 올라간거지? 싶었고.. 그치만! 우리가 그만큼 열..

회고 2022.01.31 2

iOS) RIBs Tutorial 3 - Dependency 활용

RIBs Dependency Injection and Communication 튜토리얼2를 마쳤다는 전제 하에 진행됩니다. 튜토리얼2 까지는 RIBs의 핵심 개념들에 대해서 다루었습니다. 튜토리얼3 에서는 새로운 RIB을 만들지 않고 지금까지 만들었던 RIBs를 수정하는 방식으로 진행됩니다. 지금까지의 RIB Tree Goals TicTacToe Game의 처음 시작 화면에 몇가지가 추가됩니다. 게임에 어떤 플레이어들이 참가하는지 알고싶기에 플레이어의 이름을 표시해준다. 플레이어들이 게임을 여러번 한다면 그들의 게임 스코어를 추적해서 누적 점수를 시작 화면에 보여준다. 위의 것들을 하기위해서 우리는 다음과 같은 목표를 갖게 됩니다. Builder의 build 메서드를 통해 동적인 dependency를 하..

iOS 2022.01.26 0

iOS) RIBs Tutorial 2

Tutorial 1 내용 간단 요약 Goal -RIB에 존재하는 Interactor, Builder, Router, Presenter등이 서로 어떻게 커뮤니케이션 하는지 이해하기 Official Wiki GitHub - uber/RIBs: Uber's cross-platform mobile architecture framework. Uber's cross-platform mobile architecture framework. - GitHub - uber/RIBs: Uber's cross-platform mobile architecture framework. github.com 소스코드 GitHub - snowedev/Study-RIBs: Practice Architecture(RIBs) Practice..

iOS 2022.01.13 0