전체 글
-
[iOS] RIBs를 2개월 정도 사용해본 후기👻 iOS 2021. 3. 22. 22:01
iOS 개발을 다시 시작하면서 가장 먼저 궁금했던 것은 '6년 전에 썼던 MVVM 아키텍쳐가 현재는 어떻게 변화했는가?' 였어요. 결론적으론 당시에는 자료가 많지 않아서 구현 방식이 제각각 이었지만 현재는 Best Practice 가 있다는 정도의 차이인듯 합니다. 현재의 MVVM을 사용하는 방향은 크게 변함이 없다고 보여요. 이 말은 예나 지금이나 MVVM은 누가 어떻게 쓰느냐에 따라서 천차만별 개발론이 펼쳐진다는 얘기;; 막말로 제가 멋대로 만들어두면 새로 입사한 뉴비들은 읭? 하면서 코드를 분석에 과도한 노력이 불가피할 수 있다는 얘기 ㅋㅋ 저는 코드에 자유로움을 부여하는 것을 좋아해요. Angular 보단 React 를 더 좋아하는 것도 그 이유중에 하나고요. 하지만 React 로 자유롭게 개발하..
-
[iOS] Carthage 로 RIBs 프로젝트 셋팅하기 #2👻 iOS 2021. 3. 21. 00:18
- 2020.12.28 - [👻 iOS] - [iOS] Carthage 로 RIBs 프로젝트 셋팅하기 #1 에서 이어집니다. - 2021.03.19 - [👻 iOS] - [iOS] Carthage 가 Xcode 12에서 빌드오류가 난다고!도 참고하세요! 3개월 만에 Carthage 셋팅을 마무리 해보려 합니다. 셋팅하기 #1은 실패사례로 보고 다시 프로젝트 만들어서 할텐데 그래서 오늘 해야할 일은 2가지예요 1. 새 프로젝트 생성해서 RIBs 빌드 2. 빌드된 RIBs를 이용해서 Xcode 설정에 추가 1. 새 프로젝트 생성해서 RIBs 빌드 xcode 프로젝트를 완전히 새로 만듭니다. 이름은 그냥 ribs-carthage 로 할게요. 만들어진 새 프로젝트 경로로 이동합니다. carthage 설정 파일엔..
-
[iOS] Carthage 가 Xcode 12에서 빌드오류가 난다고!👻 iOS 2021. 3. 19. 22:17
이전 포스팅과 관련이 있지만 안 보셔도 무방합니다. 실패사례니까... ㅠㅠ 2020.12.28 - [👻 iOS] - [iOS] Carthage 로 RIBs 프로젝트 셋팅하기 #1 [iOS] Carthage 로 RIBs 프로젝트 셋팅하기 #1 RIBs 를 이용해서 구조를 잡기로 했고, 모듈의 버전관리는 Carthage 로 해보기로(?) 했어요. 그래서 Quick Start 를 보며 무작정 뛰어들어 봅니다. github.com/Carthage/Carthage#quick-start Carthage/Carthage A.. maart.tistory.com Carthage 로 RIBs 를 설치해 보려고 했다가 망한 포스팅을 이제야 살려봅니다. 후... 저는 저 시기 이후로 Carthage가 싫어졌어요. 물론, 빌드..
-
[Swift] lazy 속성과 self-executing 의 활용👻 iOS 2021. 2. 10. 23:28
collectionView 초기화를 아래와 같이 클로저로서 생성이 가능하다. .....이런게 되다니!! 멋져 ❤️ class ItemsViewController: UIViewController { private lazy var collectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() let view = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout) view.delegate = self view.dataSource = self return view }() override func viewDidLoad() { super.viewDidLoad()..
-
[iOS] Keychain 구현해보기👻 iOS 2021. 1. 25. 00:33
지난번 개론을 알아보는 포스트에 이어서.. 2021/01/24 - [👻 iOS] - [iOS] Keychain 개론 이번엔 실제 구현을 해봅니다. 간편하게 쓸 수 있는 라이브러리가 있긴하지만 공부하는 거니까 그냥 해볼께요. 1. 준비 화면이랑 연동해서 테스트를 해볼껀데 기본적인 컨트롤은 User ID, Password 입력 2개와 Load, Add, Update, Delete 를 실행하는 버튼 4개, 그리고 상태를 표시할 Label 1개를 선언해서 ViewController에 연결해 줄꺼예요. 프로젝트를 새로 만들고! (이때 신남) service 값으로 사용할 멤버 변수를 하나 만들어서 Bundle ID를 반환하도록 하겠습니다. class ViewController: UIViewController { @..
-
[iOS] Keychain 개론👻 iOS 2021. 1. 24. 21:57
지금까지 Keychain 을 알고 있기를 애플에서 제공하는 보안처리된 스토어 정도로만 이해하고 있었고, iOS로 개발이야 써볼일이 없었으니 사실 깊이 알아볼 생각을 못했다. (반성 ㅠㅠ) 지금이라도 알아간다는 것을 다행으로 생각하며;;; 오늘도 기록 시작! 1. 개요 iOS앱은 단일 Keychain에 접근할 수 있다. 사용자가 기기를 잠금 상태에 따라 Keychain의 잠금 상태도 동일하다. (기기 잠금해제 = 키 체인 잠금해제) 앱은 자체 Keychain이나 앱이 속한 그룹의 공유된 Item에만 접근 가능하다. Keychain 체인 컨테이너 자체는 관리 할 수 없다. macOS 에서는 임의의 수 키 체인을 지원한다. 2. Keychain Service Keychain Service API 는 Keych..
-
[iOS] Face ID, Touch ID 구현하기👻 iOS 2021. 1. 23. 22:24
앱등이로서 앱을 쓰다보면 많이 적용되어 있어서 굉장히 친숙한 Face ID, Touch ID. 그런데 정작 난 개발자로서 그게 어떤 과정으로 동작하는지 모른다. 반성하며... 이제라도 파보고 잊지 않으려고 기록해 두도록 한다. 참고사항 인용 : www.raywenderlich.com/236-how-to-secure-ios-user-data-the-keychain-and-biometrics-face-id-or-touch-id Note: - Face ID 물리 장비가 필요함. - Touch ID 는 시뮬레이터에서도 된다. (Xcode 9 이상) - Keychain 도 역시 시뮬레이터에서 사용가능. - 튜토리얼 대부분 Touch ID를 쓰지만 Face ID 도 대부분 적용됨. - Under the hood, ..
-
[자료] Letswift19-clean-architecture👻 iOS 2021. 1. 17. 22:43
레츠스위프트 워크숍 - 클린 코드와 클린 아키텍처 www.slideshare.net/godrm/letswift19cleanarchitecture Letswift19-clean-architecture 레츠스위프트 워크숍 - 클린 코드와 클린 아키텍처 www.slideshare.net 지나가다 주운 자료인데 가볍게 한번 봤는데... 그러면 안 될것 같아서 ㅋㅋ 기록해두고 또 보려고 합니다. swift 로 clean architecture를 잘 설명해 주어서 3번 이상은 읽어야 할 것 같아요.
-
[iOS] RIBs 로 Routing 처리 #2👻 iOS 2021. 1. 16. 00:56
2021/01/15 - [👻 iOS] - [iOS] RIBs 로 Routing 처리 #1 에서 이어집니다. 이전까지 Todo RIB을 구성하고 Root 에서 해당 RIB을 떼었다가 붙이거나 하는 구현을 마쳤어요. 이제 LoggedOut RIB 에서 Todo RIB 으로 넘어가는 구현을 알아 보겠습니다. (뷰를 코드로 좀 더 수월하게 구성하기 위해서 SnapKit 을 Podfile에 추가) LoggedOut에 버튼 하나 넣어주고. 버튼을 누르면 RootRouter에 routeToTodo 가 불려지면 되겠습니다. 그렇다면 아래와 같은 과정이 필요할듯 해요. 1. LoggedOutViewController 에서 listener 를 호출하는 것으로 정의하고 2. interactor 에서는 해당 프로토콜을 구현해..
-
[iOS] RIBs 로 Routing 처리 #1👻 iOS 2021. 1. 15. 23:51
2020/12/29 - [👻 iOS] - [iOS] Child RIBs를 추가해보자 에서 이어집니다. 어... 지난 글을 쓰고 해가 바뀌었네요 ㅎ 보름이나 지난 것은 제가 그간 좀 바빴기 때문에.. (횡설수설) 다시 RIBs 공부에 매진해 봅니다. 지난번엔 Child RIBs만 추가하고 끝났는데 그 Child는 LoggedOut 이란 이름이었어요. - 이유는 없고 RIBs 샘플에 따르면 제일 먼저 추가하게 되는 뷰 - 공부하는 거니까 그냥 여기부턴 각자 노선을 가는 것으로 하고 uber의 sample은 덮어 버립니다 ㅋㅋ (제가 하고싶은대로 할 거예요..) 의미 없이 LoggedOut이 추가되었지만 나중에 다시 의미 있게 해 주고 여기에서 버튼을 눌러 LoggedOut이 닫히면 새로운 Child로 전환하..