본문 바로가기

iOS

(115)
[iOS] MVC, MVVM, MVP MVC, MVVM, MVP 개발자는 프로젝트를 시작하기 이전에, 혹은 이미 진행중인 프로젝트에 투입되어 프로젝트를 진행하게 된다면 어떠한 아키텍처 패턴 으로 설계되어 있는지 파악해야 한다. 오늘은 iOS 개발시 주로 사용되는 MVC, MVVM, MVP에 대해 간단히 살펴보도록 한다. 아키텍처의 역할 본문 시작에 앞서 오늘날에는 왜이리 많은 디자인 패턴이 존재하며 이 선택이 왜 중요한지에 대해 짚고 넘어가도록 한다. 만일 우리가 정말 무수히 많은 양의 코드가 존재하는 대형 프로젝트를 진행하는 도중에 디버깅을 해야하는 상황이라고 생각해보자, 이러한 경우 우리는 클래스의 모든 속성들을 머릿속에 담아두고 기억하기 어렵기 때문에 어떠한 버그도 찾지 못하고 고치지도 못하는 불상사가 일어날 수 있다. 좋은 패턴들은 ..
[iOS] iOS13 이후 버전에서의 Navigation Controller 설정 기존에 구현한 회원가입 절차를 Navigation Controller를 이용해 재구현하였다. 위 구현과정에서 많은 삽질이 있었다... 정답은 SceneDelegate.swift 내에 있는 didFinishLaunchingWithOptions였다. iOS13 이전의 버전은 기존과 같이 AppDelegate에 있는 didFinishLaunching 에서 아래와 같이 처리해주면 된다. / // AppDelegate.swift // func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override poin..
[iOS] App LifeCycle iOS 앱 생명주기 App Life Cycle App의 생명주기란, App을 터치하여 실행시킨 뒤 이것이 완전히 종료되기 까지 크게 3단꼐, 세밀하게 10단계로 진행이 된다. UIApplication 객체 생성 AppDelegate 객체 생성 Event Loop 을 실행하며 유저의 이벤트 확인 App Touch main() 안에서 UIApplicationMain() 호출, UIApplication 객체 생성 UIApplication 객체는 info.plist 파일으로부터 앱에 필요한 데이터와 객체들을 로드 커스텀 코드를 처리하기 위한 AppDelegate를 생성하고 이를 UIApplication 객체와 연결 실행을 준비하고 application(_:willFinishLaunchingWithOptions:..
[iOS] SnapKit Snapkit 이번 프로젝트에서 SnapKit 을 사용하게 되어 이를 직접 사용하기 이전에 SnapKit 이 무엇인지 먼저 공부하며 본 문서를 작성한다. SnapKit이란? cf) SnapKit Official Repository iOS 앱을 개발할 때에는 다양한 해상도를 유연하게 지원하기 위하여 Auto Layout이라는 기능을 제공한다. Auto Layout이란? AutoLayout 이란, 기존의 Frame-Based Layout 과는 달리 View와 View사이의 관계를 이용하여 해당 객체의 위치와 크기를 자동으로 결정하는 Layout System이다. SnapKit이란 iOS와 OS X의 Auto Layout 기능을 코드로 손쉽게 적용하도록 도와주는 기능을 제공하는 라이브러리이다. 즉, 가독성을 ..
[iOS] ViewController _ Lifecycle 뷰 컨트롤러 생명주기 본 문서에는 뷰 컨트롤러 생명주기에 대하여 공부한 내용을 정리하여 기재한다. ViewController LifeCycle viewDidLoad() 뷰의 생명주기 중 첫번째는 항상 봐왔던 viewDidLoad()이다. 모든 IBOutlet, IBAction, 뷰 관련 모든 객체들이 연결되는 시점이다. 중요한 점은, 뷰가 만들어지면 딱 한번 실행되는 메서드라는 점이다. 따라서, 뷰를 사용하기에 앞서 초기화해야 할 내용이 있다면 주로 viewDidLoad()에 기재한다. 뷰가 로드된 이후에 운영체제는 viewWillAppear() 메서드를 호출한다. viewWillAppear() 위 메서드는 뷰가 스크린에 띄워지기 직전에 호출된다. 따라서, UI를 띄우기 직전에 특정 컴포넌트를 숨기거나 ..
[iOS] Codable Codable cf)Codable Codable 이란? Codable: A type that can convert itself into and out of an external representation. Codable 이라는 Typealias는 자신을 변환하거나 외부 표현으로 변환할 수 있는 타입을 의미한다. 여기서 외부표현이란 JSON과 같은 타입을 의미한다. 선언 typealias Codable = Decodable & Encodable Codable 은 위와 같이 이루어져 있다. 즉, Codable은 Decodable 과 Encodable 프로토콜을 준수하는 타입이다. Decodable & Encodable Decodable : 자신을 외부표현(External representation)에서 디코..
[iOS] 네비게이션 인터페이스와 모달 내비게이션 인터페이스와 모달 Index 1.내비게이션 인터페이스란? 2.내비게이션 컨트롤러 3.내비게이션 스택이란? 4.내비게이션 스택에서의 화면이동 5. 모달이란? 내비게이션 인터페이스란? 내비게이션 인터페이스란 주로 계층적 구조의 화면 전환을 위해 사용되는 드릴 다운 인터페이스다. 드릴 다운 인터페이스란 아래와 같이 각 선택할 수 있는 항목에 대한 세부 항목이 존재하는 인터페이스를 의미한다. 내비게이션 인터페이스는 내비게이션 컨트롤러를 통해 구현한다. 내비게이션 컨트롤러 내비게이션 컨트롤러는 컨테이너 뷰 컨트롤러로써 내비게이션 스택을 사용하여 다른 뷰 컨트롤러를 관리한다. 여기서 내비게이션 스택에 담겨서 콘텐츠를 보여주게 되는 뷰 컨트롤러들을 컨텐트 뷰 컨트롤러 (content view control..
[iOS] UISlider 공식문서 번역 및 공부 UIPickerView cf) UISlider INDEX 1. Declaration 2. Overview 3. Responding to User Interaction 4. Interface Builder Attributes 5. Topics `UISlider` 클래스는 범위 내 연속되는 범위 내에서 단일 값을 선택하는데 사용되는 제어기능을 제공한다. Declaration class UISlider: UIControl Overview (그림 참고) 슬라이더의 thumb을 이동시키면 업데이트 된 값이 연결된 동작에 자동으로 전달된다. 슬라이더의 외형 구성을 보면 알 수 있듯, 슬라이더의 모양은 사용자가 커스텀 할 수 있다. track과 thumb에 색상을 넣을수도 있고, 슬라이더의 끝 부분에 이미지를 넣을수..