드디어 우리가 만든 앱을 출시하기 전에 TestFlight를 사용해 생각지 못한 에러를 찾아보려고 한다 🙂 먼저 TestFlight가 왜 필요한지에 대해 설명하고 테스터를 등록하고 권한을 부여하는 과정과 초대 받은 테스터의 사용 방법을 살펴보자 TestFlight란?먼저 TestFlight란 애플이 제공하는 iOS 앱 테스트 플랫폼으로 개발자들이 앱을 배포하기 전에 베타 테스트를 수행할 수 있도록 도와준다.TestFlight를 통해 개발자는 테스트 초대장을 발송하고 테스터들이 앱을 설치하고 피드백을 제공할 수 있다. TestFlight의 주요 기능베타 테스트 관리 : TestFlight는 베타 테스트를 쉽게 관리할 수 있는 도구를 제공한다, 개발자는 앱의 새로운 빌드를 업로드하고, 테스트 초대장을 발송..
MVVM 디자인 패턴이란?MVVM은 Model , View , ViewModel 로 나눠져 관리하는 디자인 패턴이다. 화면을 만드는 코드와 데이터를 처리하는 코드를 분리하는 것이 MVVM의 핵심이며, 데이터를 전달하는 방식으로 View가 ViewModel 값을 관찰하여 변화를 반영하게 된다. 버튼을 클릭했을 때 이미지가 바뀌는 동작을 구현하려고 할때 MVC 패턴은 버튼이 눌리면 이미지를 바꾼다는 개념이고 MVVM 패턴은 버튼을 누르면 ViewModel의 데이터가 바뀌고 데이터가 바뀌니 이미지도 자연스럽게 바뀐다는 개념이다. 이를 토대로 View가 ViewModel의 값을 관찰한다는 말이고 이를 도와주는 프레임워크가 Combine , 라이브러리가 RxSwift이다. Model간단한 예시를 바탕으로 MVVM..
뷰컨트롤의 생명주기 ViewController 의 생명주기 메서드는 얼핏보면 많고 복잡해 보이지만 메서드의 이름으로 잘 설명이 되어있어 생각보다 그렇게 어렵지는 않다. viewDidLoad 먼저 viewDidLoad의 메소드는 이름 그대로 view가 메모리에 로드되고 난 후 딱 한번 호출되는 메서드이다. 해당 메소드는 시스템에 의해 자동으로 호출되기 떄문에 일반적으로 리소스나 화면의 구성요소들을 초기화 하는 용도로 사용된다. viewWillAppear viewWillAppear 라는 메소드명은 view가 보일 예정이다 라는 뜻으로 말 그대로 View 가 보이기 직전, 즉 만들어진 ViewController가 View 계층 구조에 추가되기 직전에 호출된다. 이는 메모리 로드와는 상관없이 현재 화면에 해당 ..
Result 타입 이란? 함수나 메서드에서 성공 또는 실패를 반환하는데 사용되는 형식이며, 주로 비동기 작업 진행 시 사용된다. Swift5 에서 새로 추가된 Result Type를 이해하기 위해선 열거형 , 연관값, 제네릭을 이해하고 있어야 한다. 에러가 발생하는 경우, 에러를 따로 외부로 던지는 것이 아니라 리턴 타입 자체를 Result 타입으로 구현해서 함수 성공과 실패 정보를 담아 리턴한다. 장점으로 실제 함수 정의시에 에러 타입을 명시적으로 선언하며 타입캐스팅이 불필요하다는 점이 있다. Result Type 처리 3단계 (1) 에러타입 정의 먼저 Error 프로토콜을 채택해 열거형을 통해 에러 타입을 지정해둔다. enum Result where Failure: Error{ case success..
iOS 앱에서 동기와 비동기는 아주 자주사용되는 내용이고 사실 강의를 들으면서도 좀 어려운 개념이었다. 여러번 반복해서 들으면서 이 개념을 조금 더 익힐 수 있도록 해야겠다. 오늘 공부한 비동기 , 동시성 프로그래밍 관련 2탄 시작해보자 동기(sync) vs 비동기(async) 동기(sync) 동기적인 작업은 순차적으로 실행되며, 한 작업이 끝나야 다음 작업이 실행된다. 동기적인 작업은 보통 현재 실행 중인 스레드에서 처리되며, 작업이 완료될 때 까지 해당 스레드는 차단된다. 비동기(async) 비동기적인 작업은 순차적으로 실행되지 않고 별도의 스레드에서 바로 새로운 작업이 시작된다. 비동기적 작업은 보통 백그라운드 스레드에서 처리되며, 작업이 완료되면 메인 스레드로 결과를 반환하거나 콜백 함수를 호출하..
iOS 메인스레드 (Thread 1) 의 역할 iOS 애플리케이션은 메인 스레드를 생성하고 메인 런 루프(Main Run Loop)를 실행하여 앱의 이벤트를 처리한다. 이벤트는 주로 사용자의 상호작용(터치, 제스처)이나 시스템에서 발생하는 알림(앱의 상태변화, 백그라운드 작업 등) 등을 포함한다. 사용자 인터페이스(UI) 처리 메인 스레드는 앱의 UI를 처리하는 주된 스레드이다. 사용자의 모든 상호 작용은 메인 스레드에서 처리된다. 화면에 보이는 요소들의 업데이트인 레이아웃 변경, 텍스트 업데이트, 이미지 로드 등은 메인 스레드에서 수행된다. 이벤트 처리 사용자의 터치, 제스처 등의 입력은 이벤트로 변환되어 메인스레드로 전달된다. 메인 스레드는 이러한 이벤트를 받아들여 적절한 UI 업데이트나 작업을 수행..