👨🏻‍💻iOS 공부

    [Design Pattern] Factory Pattern과 Abstract Factory Pattern

    Factory Pattern Factory pattern이라는 말 그 자체로 객체를 생성해주는 역할을 한다. Factory pattern의 정의는 다음과 같다. 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브 클래스에서 결정하게 만드는 패턴이다. 즉 객체를 통해 인스턴스를 만드는 것이 아니라 Factory method를 통해 인스턴스를 생성하고 사용하게 되는 것이다. 어떤 과정으로 인스턴스가 생성되는지 그 과정에서 알아야 하는 세부 사항들을 줄여주는 효과가 있다. 예를 들어 storyboard를 기반으로 View Controller의 인스턴스를 만들려고 할 때 알아야 하는 값이 두 가지 있다. 바로 storyboard의 name과 identifier이다. 매번 Vie..

    [iOS] Delegation 재정복하기 (feat. 야곰 아카데미)

    본 게시글은 야곰 아카데미의 Coda가 제공한 실험실 콘텐츠를 학습하며 얻은 지식과 경험을 정리한 글 입니다. Thanks for Coda!!🙇🏻‍♂️🙏🏻 오랜만에 블로그에 글을 남겨봅니다~! (아카데미에서 공부하느라... 블로그가 뒷전이 되었네요... 블로그에만 올리지 않고 github에는 TIL로 매일 정리하고 있습니다!) 각설하고 Delegation에 대해서 알아봅시다! 1. Delegation이란? Delegation이란 무엇일까? 뭔가 익숙한듯 익숙하지 않은 단어.... 여기저기서 delegation pattern, delegate pattern이라는 말을 들어봤을 것이다. 답은 항상 단어의 뜻에 있다. 단어의 뜻을 알아보자. "위임"이라는 뜻이 현재 문맥에서는 적합한 것 같다. 그렇다면 무엇을..

    [Swift] wholeNumberValue 란?

    문자열를 정수형으로? ( String -> Int ) 알고리즘 문제를 풀다보면 Character나 String을 Int로 변환시켜야 하는 순간을 마주하게 된다. 이 때 가장 보편적인 방법으로는 Int()로 감싸서 값을 변환시키는 것이다. let numbString: String = "2" let numb = Int(numbString) print(numb) // Optional(2) // optional 형태로 반환되기 때문에 보통 옵셔널 바인딩을 하여 사용한다. if let n = Int(numbString) { // Int가 된 n을 활용하면 됨! } 다만 이 경우 주의해야할 점이 있는데 String 형일 때만 Int( )를 바로 씌울 수 있다는 것이다. numbString이 Character인 경우..

    [RxSwift] Operators - deferred

    Creating 카테고리에 속하는 deferred에 대해서 알아볼 것이다. 공식문서에는 defer라고 되어있지만, RxSwift에서는 deferred로 사용한다. deferred 1. 정의 defer라는 단어의 뜻처럼 옵저버블의 생성을 "지연"하는 역할을 한다. deferred는 옵저버가 구독하기 전까지 옵저버블을 생성하지 않도록 하며, 구독 이후에는 각 옵저버 별로 새로운 옵저버블을 생성해준다. 2. 구현 public static func deferred(_ observableFactory: @escaping () throws -> Observable) -> Observable { Deferred(observableFactory: observableFactory) } 클로저를 통해 옵저블을 생성해주는데..

    [RxSwift] Operators - Interval, timer

    Creating에 속하는 Interval operator에 대해서 알아볼 것이다. Interval 1. 정의 주어진 시간 간격을 두고 주기마다, emit되는 옵저버블을 생성한다. Interval 연산자의 경우 completed 되지 않고, 무한한 시퀀스를 생성한다. 즉, 직접 dispose 시키지 않는다면 구독 이후에 계속 반복되는 것이다! 2. 구현 Observables의 Timer에서 구현 내용을 살펴볼 수 있다. public static func interval(_ period: RxTimeInterval, scheduler: SchedulerType) -> Observable { return Timer( dueTime: period, period: period, scheduler: schedule..

    [iOS] URLSession을 활용한 비동기 프로그래밍 (with. NASA API)

    URLSession의 구조나 원리, Json 구조, 비동기 프로그래밍에 대해 익숙해지고 싶은 마음과, 더욱 더 잘 활용하고 싶다는 생각에 각종 API들을 활용하여 데이터를 받아와 비동기적으로 처리하는 방법들을 차례대로 학습해보고자 합니다! 어떤 API가 재밌을까 고민하던 찰나에, NASA에서 매일 우주 사진과, 이에 대한 설명을 제공하는 API를 무료로 사용할 수 있다고 하여서 이를 바로 선택해서 진행했습니다! 대략 어떤 플로우로 진행될지 간략하게 보고 바로 시작해봅시다! --------사전 준비-------- 1. NASA Open API : key 발급 2. Json 구조 확인 ---------XCode--------- 3. 데이터 모델 정의 4. API Service 구현 (URLSession) 5..