iOS 27

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

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

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

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

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

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

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

iOS 2021.09.15

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

Kingfisher, Alamofire, Moya 많이들 사용하시나요? 저도 사용하고 있습니다만.. 얘네를 사용하는 이유가 URLSession, NSCache등을 사용할 때 번거로움이 많아서잖아요? 근데 제가 그 번거로움을 못 느껴본 것 같아서 이참에 직접 구현하며 경험해보고 정말 어떤 점이 좋은 건지 공부해보려고 해요. URLSession을 먼저 알아볼게요 URLSession? HTTP/HTTPS를 통해 콘텐츠 및 데이터를 주고받기 위해 애플에서 만든 서버 통신 API 클래스. HTTP/HTTPS외에도 인증, 쿠키 관리, 캐시 등도 지원한대요(사실 메서드 되게 많으니까 definition 참고하는게 더 좋을듯). URLSession은 기본적으로 비동기로 구현이 되어있어요. 그래서 구현 할 때 별도의 비..

iOS 2021.09.14

iOS) ARC(Auto Reference Counting)

오늘은 이름부터 멋드러지는 ARC에 대해서 공부하고자 합니다 :) 1. ARC란 ARC란 Automatic Reference Counting의 준말로써, 자동 참조 카운트라는 의미입니다. ARC가 있기 때문에 개발자는 별도로 메모리 관리를 위해서 인스턴스들의 참조를 직접 관리하며 해지해주지 않아도 됩니다. 무슨 말이냐면..! 모든 기기에는 메모리가 존재하고 이러한 메모리를 적절히 사용하여 작업을 처리해야합니다. 앱에서도 마찬가지로 앱의 메모리 사용을 관리해야 하는데, Swift에는 고맙게도 이를 알아서 관리해주는 ARC라는 녀석이 존재하는 것입니다! ARC는 자동으로 참조 횟수를 관리하기 때문에 ARC가 알아서 더 이상 사용하지 않는 인스턴스를 메모리에서 해지합니다. 때문에 개발자가 메모리 관리에 신경 ..

iOS 2021.07.12

iOS) TestFlight? App Store 등록? 배포를 위한 준비과정 (2-실습편)

iOS) TestFlight? App Store 등록? 배포는 어떻게 하는거지? (1-개념편) 들어가며 개발자 계정을 구매한 이후에도 AppStore나 TestFlight에 앱을 배포하는 과정에는 많은 것들이 필요합니다. 오늘은 그 과정 속에서 필요한 것들이 무엇인지, 왜 필요한지 알아보도록 하겠습 snowee.tistory.com 본 포스팅의 전 글에서 개념을 공부해보았습니다! 아직 읽지 않으신 분들은 본 포스팅의 단계가 이해되지 않으실 수 있으니 읽어보고 오시는 것을 추천드립니다! 개념을 익혔으니 실제로 배포를 위한 과정을 밟아볼까요? 전체적인 과정은 다음과 같습니다. "CSR 발급 신청" > "CSR 발급" > "발급된 CSR로 인증서 발급 신청" > "인증서 발급" > "발급된 인증서로 Provi..

iOS 2021.06.11

iOS) TestFlight? App Store 등록? 배포를 위한 준비과정 (1-개념편)

들어가며 개발자 계정을 구매한 이후에도 AppStore나 TestFlight에 앱을 배포하는 과정에는 많은 것들이 필요합니다. 오늘은 그 과정 속에서 필요한 것들이 무엇인지, 왜 필요한지 알아보도록 하겠습니다! 먼저, Apple Developer Program에 enroll하게 되면 TestFlight나 AppStore배포만 할 수 있는 것이 아닙니다! 비싼만큼..할 수 있는 것들이 다양하게 있으니 하단 링크를 방문하여 읽어보시는 것을 추천드립니다! 포함 사항 - Apple Developer Program 멤버십 세부 사항 멤버십 등록 시 Apple 플랫폼을 사용하는 전 세계 10억 명 이상의 고객을 위한 소프트웨어를 제작하고 제공하는 데 필요한 모든 도구, 리소스 및 지원을 이용할 수 있습니다. dev..

iOS 2021.06.11