Danny의 iOS 컨닝페이퍼
반응형
article thumbnail
[iOS/Swift] TextField를 바인딩 시켜보자(MVVM, RxCocoa 원리)
UIKit/Swift 2023. 11. 28. 01:40

시작 이전 글에서 [iOS/Swift] MVVM 패턴의 Data Binding에 대해서 알아보자! (Closure, Observable, Combine) 간단하게 바인딩을 하는 법을 알아봤습니다. 이전 글의 방법은 'ViewModel -> View 바인딩'으로 어디선가 데이터를 받아오면, ViewModel의 데이터들이 View와 결합되어, 즉시 View에 업데이트 되게 만들었고 이번에 공부해 볼 것은 'View -> ViewModel 바인딩' 에 대해서 알아보려고 합니다. 말 그대로 이번엔 View(사용자)에서 입력 받은 데이터를 즉시 ViewModel에 결합시키는 방법을 배워봅시다. 일단, 들어가기 전에 간단히 로그인 화면을 생각해 봅시다. 로그인 화면은 먼저 사용자가 ID와 Password를 입력을 ..

article thumbnail
[iOS/Swift] sizeToFit, sizeThatFits 사용법
UIKit/Swift 2023. 4. 10. 16:54

시작 sizeToFit와 sizeThatFits 두 메서드 모두 해당 콘텐츠에 따라 자동으로 크기를 조절해 주는 메서드입니다. 간단한 예제와 함께 빠르게 설명하고 끝내겠습니다. sizeToFit 간단히 설명하면, 뷰가 현재 포함하고 있는 콘텐츠에 맞게 크기를 조절합니다. 예를 들어, Label이 있다고 해봅시다. let textLabel: UILabel = { let label = UILabel() label.numberOfLines = 0 label.backgroundColor = .secondarySystemBackground label.text = "안녕하세요" + "\n" + "저는 현재 iOS 공부중입니다." + "\n" + "가자" return label }() override func vie..

article thumbnail
[iOS/Swift] NavigationController의 ToolBar를 코드로 만들어 봅시다
UIKit/Swift 2023. 4. 10. 03:41

시작 NavigationController의 ToolBar를 코드로 만들어 봅시다. ToolBar도 NavigationBar와 만드는 방법이 비슷하더라고요. 참고로 ToolBar와 TabBar는 완전히 다른 기능을 하는 클래스입니다. 또한 TabBar는 UINavigationController에 속해 있지도 않고요. 여기서는 ToolBar를 만들 거예요! 한번 만들어 봅시다. ToolBar ToolBar 만드는 방법은 1. UINavigationController의 계층에 있는 ToolBar를 사용 2. 직접 UIToolBar 만들어 주는 방법이 있습니다. 오늘은 UINavigationController를 통해 ToolBar를 구현해 보겠습니다. 일단 ToolBar를 사용하기 위해선 당연히 UINavig..

article thumbnail
[iOS/Swift] Life Cycle의 loadView
UIKit/Swift 2023. 3. 31. 00:23

시작 간단히 할 예정이라 먼저 초스피드로 뷰 컨트롤러의 Life Cycle을 알아봅시다. 뷰컨의 Life Cycle의 순서 loadView 뷰를 생성합니다. (시스템에서 자동 호출) ⬇ viewDidLoad 뷰가 로드되고 작업을 수행 (앱이 실행되고 오직 한 번만 작업을 수행) ⬇ viewWillAppear 뷰가 화면에 나타나기 직전 준비 작업을 수행 (뷰컨으로 다시 되돌아올 때마다 작업을 다시 수행) ⬇ 뷰가 화면에 나타남 ⬇ viewDidAppear 뷰가 화면에 나타난 후 작업을 추가적으로 수행 ⬇ viewWillDisappear 뷰가 화면에서 사라지기 전에 마무리 작업을 수행 (메모리는 아직 존재) ⬇ 뷰가 화면에서 사라짐 ⬇ viewDidDisappear 뷰가 화면에서 완전히 사라진 후 작업을 수..

article thumbnail
[iOS/Swift] 동적 디스패치(@objc dynamic)
UIKit/Swift 2023. 3. 27. 14:37

시작 공식문서에서 MapKit의 Annotation 예제를 살펴보던 중 @objc dynamic var라는 키워드가 나오더라고요. annotation 예제 공식문서 MKAnnotation - coordinate 공식문서 Realm에서도 이런 키워드를 봤던 거 같은데, 그래서 오늘 간단히 한번 정리해 보고 넘어가려고 글을 적게 됐습니다. 정적(static) / 동적(dynamic) 디스패치 들어가기 전에 간단히 차이섬을 알아봅시다. 👉 정적(static) 디스패치 컴파일러가 컴파일 시점에 호출해야 할, 메서드의 실제 위치를 미리 알고 있기 때문에, 매우 빠르게 동작합니다. 컴파일 타임에 결정이 되기 때문에, 상대적으로 속도 빠릅니다. 모든 구조체는 이와 같이 동작합니다. 대신 클래스에서는 상속을 못하게 되..

article thumbnail
[iOS/Swift] 유닛 테스트(Unit Test) 사용 방법
UIKit/Swift 2023. 2. 20. 21:41

유닛 테스트(Unit Test) 사용하려는 기능이 개발자의 의도에 맞게 동작하는지 테스트를 하는 작업입니다. Unit Test에는 간단하게 "FIRST"라는 원칙이 있다고 합니다. 속도 (Fast) 느린 테스트는 개발자가 코드를 수정하고 결과를 확인하기까지 시간이 많이 걸리므로 생산성을 저하시키죠. 따라서 유닛 테스트에서는 빠른 속도로 테스트를 수행할 수 있도록 설계해야 합니다. 독립적 (Independent / Isolated) 유닛 테스트는 각각의 테스트가 서로 독립적으로 실행될 수 있어야 합니다. 이것은 특정 테스트의 결과가 다른 테스트에 영향을 미치지 않고 독립적으로 실행한다는 것을 의미합니다. 이러한 방식으로 작성된 유닛 테스트는 코드 변경에 대해 신속하게 반응할 수 있습니다. 반복적 (Repe..

article thumbnail
[iOS/Swift] 디버깅을 통해 메모리 누수를 찾아보자(Debug, Memory Leaks)
UIKit/Swift 2023. 2. 17. 20:23

메모리 누수(Memory Leak) 란? 프로그램에서 사용한 메모리를 해제하지 않고 계속 사용하는 상황을 의미합니다. 두 객체 이상이 서로를 참조할 때 참조가 끊기지 않는 문제점(Retain Cycle)이 발생하게 되죠. 이런 상황은 시스템의 리소스가 부족해지거나 앱이 충돌하는 등의 문제를 발생시킵니다. 메모리 누수를 해결하려면 기본적으로 누수가 발생하는 객체를 해제해야 합니다. 객체를 참조하는 변수를 nil으로 설정하거나 weak, unowned와 같은 키워드를 통해 참조를 관리할 수 있죠. 디버깅 방법 확인 방법으로는 이와 같이 2가지 방법이 있습니다. Debug Memory Graph 그리고 Profile에서 Leaks Instrument 사용방법에 대하여 알아봅시다. 일단 코드는 이와 같습니다. ..

article thumbnail
[iOS/Swift] MVVM 패턴의 Data Binding에 대해서 알아보자! (Closure, Observable, Combine)
UIKit/Swift 2023. 2. 14. 16:16

MVVM 란? Model-View-ViewModel로 구성된 아키텍처 패턴 중 하나로, 데이터를 처리하는 모델(Model), 사용자에게 보여지는 UI인 뷰(View), 뷰에 바인딩되어 모델과 뷰 사이를 이어주는 뷰-모델(View Model)로 분리한 패턴이다. 특징으로 Model과 View뿐만 아니라 Binding을 통하여 View와 View Model 간의 의존성까지 최소한 형태로, 데이터 처리 로직과 UI 간 상호 영향이 적어 모듈화를 통해 재사용성을 높이고 및 역할별로 Unit Test가 용이해진다. 대신 설계가 복잡하고 간단한 프로젝트에서는 View Model 설계가 오히려 능률이 떨어질 수 있다. 또한 Data Binding의 과정이 메모리효율이 안 좋다고 한다. 참고 위키 📚 Model 데이터..

article thumbnail
[iOS/Swift] UINavigationBar 사용 방법
UIKit/Swift 2023. 2. 7. 16:35

이번글은 스토리보드 대신 코드로 작성할 때 내비게이션 바의 모양 및 기타 설정 관련한 일종의 Cheat Sheet을 써보겠습니다. 설명은 이전글 [iOS/Swift] UINavigationController 살펴보기 를 참고해 주세요. UINavigationController 생성 방법 UINavigationBar를 사용하기 위해선 일단 UINavigationController를 생성해야 됩니다. SceneDelegate에서 작성 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene ..

article thumbnail
[iOS/Swift] UINavigationController 살펴보기
UIKit/Swift 2023. 2. 6. 18:15

UINavigationController의 동작 방식 내비게이션 컨트롤러란 계층으로 구성된 스택 기반의 뷰 컨트롤러입니다. 아이폰 유저라면 이미 모두 한 번쯤은 이미 사용해 봤을 거예요. 그림을 보며 동작방식을 이해를 해봅시다. 처음 보이는 [Setting 컨트롤러]는 Root View 컨트롤러입니다. [Setting 컨트롤러]에서 General을 선택하면, 대리자를 통하여 재정의한 push 동작에 의해 새로운 [General 뷰 컨트롤러]를 생성하고 [Setting 뷰 컨트롤러] 위에다 쌓는 형식이죠. 스택을 어떻게 쌓는지 간단히 알아봅시다. (push or show) 내비게이션 스택은 순서가 필요하니 배열을 사용합니다. 배열 viewControllers내부에 뷰 컨트롤러들을 저장하죠. 내비게이션 스택..

반응형