Danny의 iOS 컨닝페이퍼
반응형
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] plist의 값 얻는 방법 및 Github에서 중요한 정보 숨기는 방법(API Key, Bundle, gitignore)
UIKit/Cheat Sheet 2023. 2. 10. 06:24

extension으로 plist 불러오는 방법 이전글 [iOS/Swift] 개발 환경에 따라 각각의 다른 plist의 저장된 API Key 값 받아오기 에서도 자세히 다루기는 했지만 이번에는 간단하게 plist 값을 얻는 방법 및 gitignore까지 다뤄보겠습니다. 준비 작업 먼저 plist 파일을 추가해 주세요. 기본 plist 파일은 Dictionary 형식으로 되어있습니다. 배열도 가능 plist파일을 생성 후 원하는 이름으로 Key 값을 만들어주고 Value 값으로 사용할 API Key 값을 넣어 만들어 줍니다. 일단 이렇게 하면 준비 작업은 끝났습니다. 코드 하드코딩을 할 것이기 때문에 ⭐️ 위에서 작업한 plist파일 이름과 키 값을 정확하게 입력해 주셔야 합니다. ⭐️ extension B..

article thumbnail
[iOS/Swift] 개발 환경에 따라 각각의 다른 plist의 저장된 API Key 값 받아오기
UIKit/Cheat Sheet 2023. 2. 10. 05:01

개발 환경에 따라 서로 다른 plist 값 읽는 방법 plist 생성 Debug , Production(Release) 모드에서 서로 다른 값을 받기 위해 plist 2개를 준비합니다. 코드 /// plist를 읽을 수 있게 초기화 시킴 class BaseENV { let dict: NSDictionary init(resourceName: String) { guard let filePath = Bundle.main.path(forResource: resourceName, ofType: "plist"), let plist = NSDictionary(contentsOfFile: filePath) else { fatalError("Couldn't find file '\(resourceName).plist'."..

article thumbnail
[iOS/Swift] UIColor (RGB대신 HEX Color 이용하기)
UIKit/Cheat Sheet 2023. 2. 9. 17:11

UIColor 주로 UIColor를 생성 시 컬러를 지정하는 방법은 Red, Greed, Blue로 0~255까지의 숫자로 표현하는 RGB컬러를 사용합니다. UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) 보통 인터넷에서 색상을 찾을 때 RGB컬러대신 Hex Code Color로 주로 표기가 돼있는데요. 여기서 Hex Color Code란? RGB 방식의 색상 코드 표기법입니다. # 뒤에 붙는 여섯 자리 혹은 세 자리 숫자로 색상을 표기하는 방식이죠. 6자리인 경우 두 자리씩 끊어서 각각 Red, Green, Blue를 나타낸다고 하네요. 자세한 건 패스... UIColor Extenstion 기존 UIColor 사용 시, 마음에..

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내부에 뷰 컨트롤러들을 저장하죠. 내비게이션 스택..

article thumbnail
[iOS/Swift] 상태창(StatusBar) 색상 변경 방법 (시계, 배터리...색)
UIKit/Cheat Sheet 2023. 2. 5. 01:55

상태창(StatusBar) 색상 변경 방법 1. Project --> General --> Deployment Info 찾아가기 2. Status Bar Style을 원하는 색상으로 선택 Dark Content : 검은색으로 표시됨 Light Content : 흰색으로 표시됨 3. Info.plist 설정하기 View controller-based status bar appearance를 추가한 뒤, Value값을 No로 설정하기 코드로 변경하는 방법 View controller-based status bar appearance의 기본값은 YES를 갖고 있습니다. 그러므로 만약, Info.plist에서 생성을 해줬다면, 값을 YES로 변경하거나 제거해 주세요. ViewController에서 preferr..

article thumbnail
[iOS/Swift] UIKit에서 스토리보드 없이 코드로 작성 시 SwiftUI의 캔버스(미리보기, Preview)를 적용하는 방법
UIKit/Cheat Sheet 2023. 1. 10. 16:03

사용방법 Preview를 보고 싶은 곳에서 아래 코드를 사용합니다. makeUIViewController(context: Context) 내부에서 이름을 Preview를 보고 싶은 ViewController 이름으로 변경해 주시면 됩니다. #if DEBUG import SwiftUI struct Preview: UIViewControllerRepresentable { // 여기 ViewController를 변경해주세요 func makeUIViewController(context: Context) -> UIViewController { ViewController() } func updateUIViewController(_ uiView: UIViewController,context: Context) { //..

article thumbnail
[iOS/Swift] Custom delegate 패턴
UIKit/Cheat Sheet 2022. 12. 24. 00:17

Custom Delegate 오늘은 Custom delegate 생성 방법에 대하여 알아봅시다. 기본 Delegate 관한 내용은 [iOS/Swift] 델리게이트 패턴 (Delegate)를 참고해 주세요. 보통 Delegate 패턴은 두 컨트롤러 간의 데이터를 전달을 위한 쌍방향 커뮤니케이션 방법이다. 예를 들어 우리가 인터넷 쇼핑을 한다고 생각해 보자. 원하는 물건을 선택하고 수량 입력 후 장바구니 추가 버튼을 누르게 되면 누르는 즉시 장바구니에 물건이 업데이트된다. 개발자의 입장에서 보자면 사용자의 입력을 받아 추가 버튼을 누르는 순간 상품 컨트롤러에서 얻은 정보를 장바구니 컨트롤러로 전달시켜 작업을 하게 되는 거죠. 상품 컨트롤러가 장바구니 컨트롤러에게 일을 시킨다! 상품 컨트롤러에서 Delegat..

반응형