👨🏻‍💻iOS 공부/iOS & Swift

    [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인 경우..

    [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..

    [Swift] ARC (Automatic Reference Counting)

    ARC (Automatic Reference Counting) Swift는 ARC를 사용하여 앱의 메모리 사용을 관리하고 추적한다. 대부분의 경우, Swift에서 메모리 관리란 "그냥 되는 것" 정도이고, 메모리 관리를 위해 별도로 생각할 필요가 없다. 왜냐하면 ARC가 자동적으로 쓸모가 없어진 클래스 인스턴스를 메모리에서 지워버리기 때문이다! 하지만, 몇몇 경우에 ARC는 메모리를 관리하기 위한 코드들 간의 관계에 대한 더 많은 정보를 요구하기도 한다. 이번 장에서는 ARC가 모든 앱의 메모리를 관리할 수 있도록 하는 것을 보여줄 것이다. 레퍼런스 카운팅(Reference counting)은 클래스의 인스턴스에게만 적용된다. 구조체나 열거형은 참조 타입이 아닌 값 타입이기 때문에 참조에 의해 저장되거나..

    [Swift] Access Control

    Access Control 접근 제어(Access Control)는 다른 소스 파일(source file)이나 모듈(module)에서 오는 코드와 우리의 코드 간에 접근을 제한을 할 수 있는 기능이다. 이러한 특성을 통해 코드의 상세 구현부를 숨길 수 있고, 허용된 기능만 사용하는 인터페이스를 제공할 수 있다. 각 타입 ( class, struct, enum) 혹은 타입 내부의 프로퍼티, 메서드, 이니셜라이저, 서브스크립트 등에 특정한 접근 수준(access level)을 할당할 수 있다. 프로토콜은 전역 상수, 변수, 함수처럼 특정 맥락(context)에 의해 제한될 수 있다. 다양한 접근 수준을 제공함과 더불어, Swift는 매번 접근 수준을 명시해주는 수고로움을 덜어주기 위해 기본적으로 접근 수준을..