본문 바로가기

전체 글131

면접 스터디 : Class vs Struct vs Enum Class(클래스) -청사진으로 어떤 집단의 속성(Property)과 행위(Method)를 정의해 놓은 것이다. -Reference Type(참조 타입). ex) 다른 이에게 사진을 전달할 때 사진의 원본을 참고하도록 한다. 참조한 사진을 변경하면 원본도 같이 변경된다. -메모리 영역 중 heap(힙) 영역에 저장된다. -ARC를 통해서 메모리를 관리한다. -단일 상속이 가능하다. -Class는 참조타입이기 때문에 참조할 필요가 없을 때 메모리에서 해제되는데, 해제되기 직전에 deInit 메소드가 호출된다. 보통 메모리에서 클래스의 인스턴스가 해제되기 직전에 처리해야 할 작업을 deInit 메소드에 넣어준다. deInit 메소드는 class 당 하나만 만들 수 있고, 매개변수와 return 값을 가질 수.. 2022. 12. 20.
Local Notification(로컬 푸쉬 알림) 달력 일정 어플을 만드는 중에 기록해둔 일정의 날짜가 다가오면 알림을 보내주는 기능을 만들려고 한다. Firebase를 베이스로 한 어플이기 때문에 FCM을 사용하면 되나? 라고 생각했다. 질문해보니 FCM은 외부에서 디바이스로 푸쉬를 넣어주는 기능이고, 일정 알림은 보통 Local Notification을 사용한다고 한다. Local Notification을 시작해보자. Local Notification -외부 네트워크를 거치지 않고 기기 내부에서 발신하는 푸시 알림이다. -UserNotification 프레임 워크에서 제공하는 기능이므로 import UserNotifications 해야 한다. -크게 Content, Trigger, Request, Center 4가지로 구성되어 있다. 1. Conte.. 2022. 12. 7.
URLSession에 관하여 URLSession -iOS 앱에서 서버와 통신하기 위해 애플에서 지원하는 API다. -HTTP / HTTPS 기반 요청을 처리하기 위한 클래스 및 클래스의 세트 모음이다. -유명한 통신 라이브러리인 Alamofire나 SDWebImage 등이 모두 URLSession을 기반으로 하고 있다. -여러 가지 프로토콜을 지원하고, 인증, 쿠키 관리, 캐시 관리 등을 지원하고 있다. URLSession -URLSession Task 인스턴스를 만들고 관리하는 기본 클래스. -URLSession Configuration 개체를 제공하여 URLSession 인스턴스를 만들 수 있다. -Request와 Response를 가지고 있다. Request 1. URL 객체를 통해 직접 통신하는 형태, 2. URL Reque.. 2022. 11. 25.
제네릭(Generic)에 관하여 제네릭(Generic) -제네릭은 스위프트의 강력한 기능 중 하나로, 제네릭을 이용해서 코드를 짜면 1. 어떤 타입에도 유연하게 대응이 가능, 2. 재사용이 용이, 3. 코드의 중복을 줄여 깔끔한 표현이 가능하다. -스위프트의 표준 라이브러리는 대부분 제네릭을 사용한 코드이며, 우리는 제네릭을 쭉 사용해왔을 것이다. 예를 들어 Array, Dictionary, Set 등이 모두 제네릭 컬렉션이고, 우리가 Int, String 타입을 요소로 갖는 배열을 만드는 등의 동작들이 모두 제네릭의 기능이다. 제네릭(Generic)의 사용 -제네릭을 사용할 때는 제네릭을 사용하려는 타입 명이나 함수 명 뒤에 을 적어서 사용한다. - 에서 타입 이름을 지어줄 때는 보통 T, V 등과 같은 단일 문자나 대문자 Camel.. 2022. 11. 23.
Protocol에 관하여 1. Protocol(프로토콜) -프로토콜은 특정 기능을 수행하기 위한 메서드, 프로퍼티 등 요소들을 정의해 놓은 청사진을 말한다. -프로토콜은 정의와 제시를 할 뿐 원하는 특정 기능 구현을 제공하지는 않고, 클래스, 구조체 또는 열거형에서 프로토콜을 채택하여 특정 기능을 실제 구현할 수 있다. ex) 프로토콜 정의 protocol Example { } ex) 프로토콜 채택 struct ExamStruct : Example { } class ExamClass : Example { } enum ExamEnum : Example { } -extension을 통해 프로토콜에 추가적인 기능을 더해줄 수 있다. -다른 프로토콜을 상속받을 수도 있다.(다중 상속도 가능) 프로토콜에서 프로퍼티 요구사항 1. 이름과 .. 2022. 11. 14.
함수형 프로그래밍에 관하여 Swift는 함수형 프로그래밍을 지향한다. 따라서, Swift에서 사용되는 함수형 프로그래밍 관점에서함수형 프로그래밍을 알아보자. 함수형 프로그래밍 -프로그램이 상태의 변화 없이 데이터 처리를 수학적 함수 계산으로 취급하고자 하는 프로그래밍 패러다임이다. -기존 객체지향 프로그래밍이나 명령형 프로그래밍은 프로그램에서 값이나 상태의 변화를 중요하게 여기지만 함수형 프로그래밍은 함수 자체의 응용을 중요하게 여긴다. -부작용(side-effects)이 없는 디자인을 추구하며, 이는 테스트와 디버깅을 쉽게 하며 코드의 안정성을 높이는 데에 중요한 역할을 한다. 함수형 프로그래밍을 배워야 하는 이유 1. 동시성 문제 다중 프로세서는 항상 동시성 문제를 가져올 수 있다. 데이터의 상태를 변경하는 객체 지향 프로그래.. 2022. 10. 9.