ios
-
Singleton에 대한 의문과 의심기타 2022. 8. 26. 12:43
기존 프로젝트를 리팩토링 하는 과정에서 문득 들었던 의문이다. 통신을 통해 가져온 유저 데이터를 앱 실행중에 어떤식으로 가지고 있을까에 대한 고민중에 singleton과 userkey를 생각했다. singleton 과 userDefault 자, 그럼 둘중에 어떤 기술을 사용할지 선택해야 한다. 잠깐… userDefault도 내부적으로 singleton 패턴을 사용해서 저장하지 않나? 일단 비교해보자.. 사용 난이도 똑같다. singleton과 userDefault 모두 바로 접근하여 값을 가져올 수 있다. 안정성userDefault는 key-value 타입이다. 사용자가 직접 key를 입력해서 값을 가져온다.뭐… userDefault가 side effect로 부터 singleton에 비해 조금 더 강하다..
-
Swift) URLSession Network LayerSwift 2022. 8. 10. 19:37
iOS를 공부하다 보면 만나는 고민의 벽이 몇 가지 있다. 예를 들면 스토리보드냐 코드 베이스 레이아웃이냐.. 어떤 아키텍쳐를 사용할 것이냐... 컨벤션(줄 바꿈, branch 전략)은 어떤 식이 좋을까...? 지금 이 설계가 오버 엔지니어링은 아닐까? 이와 마찬가지로 고민되는 것이 네트워크의 모듈화. 즉, 네트워크의 레이어를 나누는 것이다. 왜 레이어를 나눠야 하나요? 지금 당장 Network Layer 키워드를 통해서 검색한 결과만 봐도 수많은 방법으로 나눈 레이어들이 존재한다. 프로토콜을 이용하거나, enum을 사용해서 EndPoint를 만든다거나, 심지어 모든 기능을 쪼개어 메서드 단위로 퍼사드 패턴들 적용한 사례도 있다. 이렇게 나누어 놓은 레이어들을 보면 오히려 흐름을 파악하기 어려운 경우도 ..
-
Data(contentsOf:)? URLSession?Swift 2022. 8. 1. 16:26
Data(contentsOf:) 이미지를 받아와서 보여주는 가장 기본적인 예제 중 이런것이 있다. DispatchQueue.global().async { do { let image = try Data(contentsOf: self.imageUrl) DispatchQueue.main.async { self.imageView.image = UIImage(data: image) } } catch { print(error) } } 개인적으로 이런 식의 데이터 통신을 접한 첫 것은 그 유명한 Standford iOS강의 일것이다. 물론 지금 와선 그 의도를 파악 할 수 있지만(빨리 보여줘야 하니까…ㅎㅎ) 처음 접한 방식이 이렇다 보니 당연히 네트워크 통신은 이런식으로 하는줄 알았다. 통신은 무조건 Dispatch..
-
CollectionView Cell 이동 시키기 (1) - 기존 방식과 custom InteractiveMovementiOS 2022. 6. 9. 20:13
보통 CollectoinView의 cell을 이동하기 위해선 gesture을 붙이고 cell의 location을 이용하여 위치를 바꾼 후 해당 model의 데이터를 스왑해준다. @objc func handleLongPressGesture() { let location = longPress.location(in: collectionView) switch longPress.state { case .began: if let indexPath = collectionView.indexPathForItem(at: location) { collectionView.beginInteractiveMovementForItem(at: indexPath) } case .changed: collectionView.updateIn..
-
WWDC) Animation hitch와 render loopiOS 2022. 4. 5. 00:04
https://developer.apple.com/videos/play/tech-talks/10855/ Explore UI animation hitches and the render loop - Tech Talks - Videos - Apple Developer Explore how you can improve the performance of your app's user interface by identifying scrolling and animation hitches in your app... developer.apple.com 본 포스트 내용의 출처는 WWDC입니다. 의/오역이 있을 수 있습니다. 이 글에선 스크롤링과 애니메이션 hitches에 대해 알아보고 render loop에 대해 자세히 살..
-
iOS) CoreData - perform 메소드iOS 2021. 1. 31. 13:32
출처: www.kairadiagne.com/2019/01/06/understanding-the-core-data-perform-methods.html Understanding the Core Data perform methods Core Data is controversial to many developers. Some love it while others think it is too difficult or that it contains too many bugs. Personally I enjoy using Core Data. Out of the box it provides a lot of functionality needed for managing the model layer www.kairadiagn..
-
iOS) Custom Present 이용시 ViewContoller Life Cycle 문제iOS 2021. 1. 6. 15:46
기존 modalPresentaionStyle을 통해 presentation 방식을 지정했던 것과 다르게 UIPresentaionController를 사용하여 custom presentatin을 진행하는 경우 따로 설정을 해주지 않는 한 ViewController가 메모리에서 제거되지 않는 것으로 보인다. 아니 메모리에서 제거 되는 것이 아닌 viewDidDisappear메서드가 불리지 않는다. 이는 transition과정에서 매우 문제가 되며 present transition에선 영향이 없지만 dismiss transition에선 transitionContext.viewController(keyType:) 메소드를 통해 containerView에 추가하고 호출할 때, 메모리에서 사라지지 않았던 VC의 v..
-
iOS) Appstore Transition 따라하기(2) - Present TransitioniOS 2021. 1. 5. 13:49
AppStore Transition 따라하기의 정수와 묘미인 transition 구성이다. 우리가 만들 Transition은 총 4개이다. - Presentation - Present Transition - Dismiss Transition - interactive Transitioning 분기를 위하여 Transition을 총괄 해주는 역할을 할 UIVIewControllerTransitioningDelegate를 채택한 AppContentTransitionController를 만들어 주자. import Foundation class AppContentTransitionController: NSObject, UIViewControllerTransitioningDelegate { var superView..