본문 바로가기

iOS

(53)
[Swift] Notification Center 개념 Notification Center 개발자 문서 A notification dispatch mechanism that enables the broadcast of information to registered observers. 등록된 Observers에 정보의 전달을 허용하는 notification dispatch mechanism이다. class NotificationCenter : NSObject 모든 객체들은 addObserver메서드를 이용하여 알림들(NSNotifcation Objects)을 받기 위해 notification center에 Observer로 등록할 수 있다. 객체를 observer로 등록하면, 그것이 받아야 하는 알림에 따라 구분된다. 그래서 하나의 객체에 여러 개의 다른 알림..
[iOS] AppDelegate.Swift는 무슨 역할을 하는 것일까? AppDelegate Appdelegate.swift에서 발견할 수 있는 AppDelegate 클래스는 아래와 같이 정의되어 있다. @main class AppDelegate: UIResponder, UIApplicationDelegate 설명 Your app delegate object manages your app’s shared behaviors. The app delegate is effectively the root object of your app, and it works in conjunction with UIApplication to manage some interactions with the system. 먼저 app delegate라는 용어를 하나 알아야 한다. app delegate는..
[Swift] Coordinator Pattern 기본!! With RayWanderlich Tutorial! Coordinator가 무엇일까? Coordinator A type to coordinate with the view controller. coordinate는 배열하다, 조정하다 정도의 의미를 가지고 있다. Coordinator는 뷰 컨트롤러의 움직임을 조정하기 위한 타입이라고 하는데, 무슨 역할을 하는 것일까? Coordinator Pattern 스위프트에서 코디네이터에 관한 글들을 읽어 보면 아래와 같은 문제를 해결하기 위해 제시된 패턴이라는 정보를 찾아볼 수 있다. Massive View Controller의 문제점 기존 화면전환 방식에 존재하던 VC간의 수평적인 관계 또는 강한 결합의 문제점 코디네이터는 위의 두 가지 문제점을 해결하기 위해 화면전환을 관리하는 독립적인 클래스를 이용하자는 아이디..
[UIKit] CompositionalLayout으로 당근마켓 게시글 상세보기 뷰 구현하기 CompositionalLayout으로 셀 중첩 대체하기 최근 셀 중첩 방식의 UI 구성이 데이터 전달 및 delegate 사용 측면에서 오버헤드라고 생각하여 CompositionalLayout으로 당근마켓 게시글 상세보기 뷰를 구현했습니다. 해당 뷰가 CompositionalLayout을 적용할 수 있는 양질의 예시는 아니지만, 연습의 의미에서 한 번 구현해 보았습니다. 완성된 뷰는 아래와 같습니다. 실제 당근마켓 앱과 다른 부분이 존재하니 유의해주세요! 먼저 이 뷰에는, 스크롤이 되는 부분과 스크롤이 되지 않는 부분이 있습니다. 네비게이션바와 가장 아래쪽 뷰는 고정하고, 사이에 있는 영역을 스크롤 가능하게 만들어야 합니다. 그리고 그 안쪽에 페이지컨트롤과 함께 스와이프로 페이징을 할 수 있는 뷰가 존..
[Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (2편 - Services, Routers 구현) https://jazz-the-it.tistory.com/25 [Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (1편 - Foundation Setting) URLSession, Alamofire, Moya 간의 선택 지금껏 iOS 앱 개발을 하면서 서버통신 시에 Moya Library를 주로 사용해 왔습니다. Moya는 Alamofire 라이브러리를 한층 더 Wrapping하여 사용하기 편리하도록 한 라이.. jazz-the-it.tistory.com 지난 편에서는 Alamofire를 Moya처럼 사용하기 위한 기초가 되는 Foundation 폴더의 요소들에 대해서 알아보았습니다. 2편에서는 Router와 BaseService를 채택 또는 상속하여 endPoi..
[Swift] Alamofire를 Moya처럼 사용해보자! By Router Pattern (1편 - Foundation Setting) URLSession, Alamofire, Moya 간의 선택 지금껏 iOS 앱 개발을 하면서 서버통신 시에 Moya Library를 주로 사용해 왔습니다. Moya는 Alamofire 라이브러리를 한층 더 Wrapping하여 사용하기 편리하도록 한 라이브러리입니다. Wrapping은 사용의 편의성이라는 장점도 제공하지만 URLSession에 접근하기 어렵다는 한계 또한 가지고 있습니다. 최근 이를 느끼고 한 계층 낮은 Alamofire 라이브러리를 사용할지, 아니면 순수 URLSession을 Module화하여 사용할지 고민하다가, 그래도 조금은 Module화가 되어있는 Alamofire 라이브러리를 사용하는 것이 돌발상황 대처에 좋을 것 같아 Alamofire를 사용하기로 결정했습니다. 개인적으로 Moy..
[RxSwift] RxSwift 기본 (1편 - Observable, Observer, Subject) RxSwift: Reactive Programming with Swift RxSwift: Reactive Programming with Swift Leverage the power of RxSwift in your reactive apps! This book is for iOS developers who already feel comfortable with iOS and Swift, and want to dive deep into development with RxSwift. Start with an introduction to the reactive programmi www.raywenderlich.com 전반적으로 위 교재를 참고하여 작성했습니다. 1️⃣ Rx Swift가 뭘까요? https://gi..
[Swift] URLSession(1) - 개념 모아보기(URLSession, URLSessionConfiguration, URLSessionTask) ✳️ URLSession 개요 📌 URLSession이란? class URLSession : NSObject An object that coordinates a group of related, network data transfer tasks. 네트워크 데이터 전달 작업에 연관된 일련의 일을 처리하는 그룹 오브젝트이다. URLSession 클래스 및 관련 클래스들은 URLs에 의해 표현되는 엔드포인트에 데이터를 업로드하거나, 다운로드할 수 있도록 하는 API를 제공한다. 또한 URLSession을 통해 iOS 앱이 실행중이지 않을 때에도 백그라운드에서 데이터를 다운로드할 수 있다. URLSessionDelegate나 URLSessionTaskDelegate를 사용하여 일의 완료(task completio..
[Swift 문법] Error Handing(오류처리), try-throw와 do-catch, rethrow, defer ✳️ Error Handling(오류처리) ✨ try-throw / do-catch를 이용한 오류 처리 오류처리란? 프로그램이 실행되는 중에 발생한 오류를 감지하고 각 오류에 알맞은 처리를 부여하여 프로그램을 바른 방향으로 제어하는 것 오류가 발생하는 이유 개발자의 실수, 서버로부터 잘못된 데이터 전달, 데이터에 접근하는 자원이 많을 경우 등등 다양한 이유로 프로그램에 오류가 발생할 수 있다. 오류가 발생했을 때 오류의 유형과 성격에 맞게 처리하여 프로그램이 문제없이 작동할 수 있도록 할 필요가 있다. Swift에서 오류처리의 구조 (1) enum: Error : 발생 가능한 오류를 예상하여 오류를 표현한다 Error 프로토콜을 채택한 열거형으로 주로 표현 (2) try - throw : 오류가 발생함을..
[Swift 문법] Optional type Closure와 @escaping ✳️ 발단 [Swift] Escaping Closure(탈출 클로저) @escaping을 붙이지 않으면 스코프 밖의 변수인 클로저에 파라미터로 전달받은 클로저를 할당 불가능하다고 알고 있었는데 아래와 같은 코드가 잘 기능하는 것을 발견했다. @escaping을 붙이지 않았는데 어떻게 할당이 되었을까요? (탈출 클로저에 대한 설명은 위 티스토리 참조 ^__^) private var leftButtonClosure: (() -> Void)? @discardableResult func leftButonAction(_ clousure: (() -> Void)? = nil) -> Self { self.leftButtonClosure = clousure self.leftButton.addTarget(self, ac..