About Closure 오늘은 클로저에 대해 알아보도록 하자. 미리보기 클로저 형태 왜 클로저를 사용하지? 여러가지 문법 아래는 나중에 다룰 예정 클로저의 메모리구조 @escaping, @autoclosure 키워드 캡처현상, 캡처리스트 사용 예시 우선 클로저란 무엇일까? 클로저 (Closures) | Swift 클로저 (Closures) | Swift 명명된 함수 생성없이 실행되는 코드 그룹입니다. 클로저 (Closures) 는 코드에서 주변에 전달과 사용할 수 있는 자체 포함된 기능 블럭입니다. Swift의 클로저는 다른 프로그래밍 언어에서 클로저, bbiguduk.gitbook.io 해당 글에 따르면 클로저는 ‘코드에서 주변에 전달과 사용할 수 있는 자체 포함된 기능 블럭’이다. 본격적으로 들어가..
iOS/Swift

About Class, Struct 미리보기 구조체 클래스 구조체와 클래스의 차이 무엇을 선택해야 하는가? 우선 내용을 정리하기에 앞서, 아래와 같은 사실을 꼭 알아두자 하나의 프로세스 내 존재하는 메모리 모델은 아래와 같다. 코드, 데이터, 힙, 스택은 꼭 기억하자. 또한, 클래스와 구조체는 ‘객체 지향 프로그래밍’ 패러다임을 연 녀석들이다. 흔히 사용하는 비유로 클래스, 구조체는 ‘붕어빵 틀’을 만들어 낸 것과 같다. → 인스턴스를 찍어냈다. 라는 말로도 사용 💡 인스턴스 → 실제로 메모리에 할당되어 구체적 실체를 갖춘 것 (스위프트에서는 클래스의 instance를 특별히 객체(object)라고 부름) 클래스 [클래스의 특징은 다음과 같다] reference type 데이터 영역에 (클래스)틀이 저장..

About Delegate Pattern [오늘은 처음으로 3번 이상 강의를 수강하게 한 ‘델리게이트 패턴’에 대해서 정리하고자 한다.] 보통 앱 View를 구상할 때, 한 화면 내에서 모든 거를 처리한다기 보단, 다른 화면과의 상호 작용을 기반으로 한 화면의 데이터를 수정하거나 여러 화면 간의 통신을 설정하는 것은 일반적이다. 그렇다면 디자인 패턴 중 하나인 ‘Delegate Pattern’은 뭘까? Delegate? delegate을 해석하자면 “대리자” 라는 뜻이다. 이는 entity가 다른 entity에게 task나 책임을 할당할 필요가 있을 때 사용된다. entity? → https://modelinspring.tistory.com/90 해당 블로그 글을 참고하자. 예시를 보면서 한번 알아보도록..

오늘은 데이트에 관해 알아보자. Date? Date가 무엇인지 우선 애플의 공식문서를 통해 알아보자. https://developer.apple.com/documentation/foundation/date 간단하게 설명을 보면, 특정 시간을 기준으로 현재 시간까지 얼마나 떨어져있는 지를 알려준다. 이때 기준 시간은 UTC라는 국제 표준 시간을 사용한다. 따라서 정리해보면, 만약 Date 인스턴스를 생성하게 된다면, UTC(2001.01.01.00:00:00) 시를 기준으로 몇초후인지에 대한 시간 정보를 통해, 현재시점을 저장한다. 이는 암시적인 날짜, 시간으로 구성된다. let now = Date() // "25 Feb 2024 at 1:15 PM" print(now) // 2024-02-25 04:15..

오늘은 Swift 5에서 등장한 Result Type에 대해서 알아보자. 우선 Apple 공식 문서를 봐보자. https://developer.apple.com/documentation/swift/result Result Type은 아래와 같이 정의되어 있다. @frozen enum Result where Failure : Error 이의 특징으로는 Generic Enumeration이라는 것. 경우에 따라 연관값을 포함하고, 성공과 실패를 나타내는 값이다. 우선 기존 에러처리 방법을 보자. 일반적인 에러처리는 다음과 같이 진행했다. 열거형 선언 후 함수 제작 do, try, catch문 정의 enum MyError: Error { case MentalError case HealthError case E..

Generic 정말 많은 언어에서 후반부에 나오는 개념이다. 타입과 관련해서 간편한 기능이라고 생각만 하고 있었는데, Swift 강좌를 보면서 다시 등장한 개념이라 이번 기회에 정리해보고자 한다. 우선 애플 공식 문서에서 Generic에 대한 설명을 참고해보자. https://docs.swift.org/swift-book/documentation/the-swift-programming-language/generics/ Documentation docs.swift.org Generic code enables you to write flexible, reusable functions and types that can work with any type, subject to requirements that yo..

지난 포스트에 이어 비동기 프로그래밍을 알아보는 시간을 가져보자. 큐의 QoS(Quality of Service) 이전 시간 DispatchQueue를 다루는 과정에서 QoS를 설정할 수 있는 큐들이 존재했다. (global, custom 큐가 가능했다!) QoS의 속성들에 대한 이야기를 하지 않은 것 같아 간단히 표로 정리하자면 아래와 같다. 서비스품질 수준 사용 상황 소요 시간 .userInteractive 유저와 직접적 인터렉티브: UI업데이트 관련(직접X), 애니메이션, UI반 응관련 어떤 것이든 (사용자와 직접 상호 작용하는 작업에 권장. 작업이 빨리 처리되지 않으면 상황이 멈춘 것처럼 보일만한) 거의 즉시 .userInitiated 유저가 즉시 필요하긴 하지만, 비동기적으로 처리된 작업 (ex..

각종 사이트, 대학 전공 강의자료를 정리해서 제작했습니다. Swift를 처음 공부하는 것이므로, 오류를 알려주시면 달게 받겠습니다 🙂 1. 동기, 비동기? 영어로는 각각 Synchronous, Asynchronous이다. 동기 정의 그대로 동시에 일어난다는 것. Request(요청) 생성시 Result를 반환할 때까지 다른 Request를 처리할 수 없음. 비동기 동기와 반대로, 동시에 일어나지 않음을 의미한다. Request 생성시 Result를 반환할 때까지 다른 Request를 처리할 수 있음. 대신에 동기보단 Request → Result를 획득하는 속도가 느림 2. 그래서 비동기 처리는 실제 어디에 쓰이는가? 많은 상황에서 비동기 처리 방식이 쓰인다. 간단한 실생활의 비유하자면 우리가 관심있는 ..

네트워크 통신의 이해 iOS에서 서버와의 통신과 처리 HTTP 프로토콜에 대한 이해 네트워킹 TCP / IP 프로토콜 여러가지 프로토콜의 결합 스위프트 내 프로토콜은 약속같은 느낌. 일상생활에서 와이파이를 잡을 수 있는 이유는 여러가지 약속(HTTP, IP, TCP…)의 조합을 통해서 사용할 수 있음. 앱을 만들기 위해 알아야 할 프로토콜은 HTTP 웹을 사용하기 위해선 (WWW를 구성하는 기술) → HTML, HTTP, URL HTTP 프로토콜 HyperText Transfer Protocol 하이퍼 문서를 전송하는 것에서 시작 현재는 이미지 / 영상 / 음성 / 파일 / JSON 등 모든 형태의 데이터 전송가능 인터넷의 모든 것은 HTTP로 이루어져 있음 TCP / IP 프로토콜 [4계층] 클라이언트..

메모리 구조 코드 우리가 만든 코드가 컴파일되어서 CPU가 실행될 수 있는 명령어 형태로 저장되어 있는 것 명령어 / 프로그램 앱(프로그램)의 모든 코드(Text) get-only, read-only (읽을 수만 있는 영역) 앱의 프로그램을 한번 짜면 그게 완성이 된 것 데이터 전역변수 / 타입(static/class) 변수 공통으로 공유하기 위한 데이터 앱이 실행되는 동안 불변 힙 동적할당 - 비어있는 메모리를 찾아서 할당하는 개념 일반적으로 오랫동안 긴시간 동안 저장 크기가 크고, 관리할 필요가 있는 데이터 개발자가 잘 관리해야함 스택 함수실행을 위한 임시적 공간 크기가 작고 빠르게 사용하기 위한 데이터 알아서 자동 관리됨 💡 Heap(힙) 영역에 할당되는 데이터는 관리를 해야지만, 메모리에서 해제가..