본문 바로가기

Swift27

Swift Concurrency 이 글은 해당 링크를 보고, 개인적으로 정리한 글입니다.(자세한 내용은 아래 링크로 ㄱㄱ)https://sujinnaljin.medium.com/swift-actor-%EB%BF%8C%EC%8B%9C%EA%B8%B0-249aee2b732d 비동기란?요청과 응답이 동시에 이루어지지 않는 것따라서 요청에 대한 응답이 오지 않아도, 다음 작업을 수행할 수 있음iOS에서는 비동기 작업을 "나중에 알 수 없는 시간에 호출되는 코드"로 설명하고 있음즉, 비동기 작업은 시스템에 의해 저장되었다가, 나중에 적절한 시점에 호출되는 것 CompletionHandler비동기 작업은 알 수 없는 시간에 호출됨따라서 해당 작업의 완료 시점을 알기 위해 completionHandler라는 클로저를 사용했음하지만 가독성, 안정성 .. 2024. 9. 22.
CodingKey에 관하여 CodingKey -애플의 정의에 따르면 "A type that can be used as a key for encoding and decoding." 인코딩 및 디코딩을 위한 키로 사용할 수 있는 타입 Codable, CodingKey 프로토콜을 채택하면 인코딩 및 디코딩 프로세스 중 사용되는 키 이름을 사용자 정의할 수 있다. Post 구조체의 id가 바로 Key를 말하며 저 Key의 이름을 내 맘대로 커스텀해서 쓸 수 있다는 말씀이다. 우리 Swift에서는 변수나 상수의 이름을 소문자 카멜케이스를 사용해서 정의한다. 하지만 우리가 변환할 API 문서 형식(예 - JSON)은 다른 형태로 Key의 이름을 가지고 있을 때가 있다. 이런 경우에 원칙대로 Key 이름을 정의하지 못하는 단점을 CodingK.. 2023. 3. 31.
메모리 안전에 관하여 메모리 안전 -Swift는 기본적으로 안전하지 않은 코드를 방지하도록 여러 장치를 제공한다. 예를 들면 변수가 사용되기 전에 초기화되고, 메모리가 해제된 후에는 접근되지 않으며, 배열 인덱스가 범위를 벗어났는지 확인 등이다. -Swift는 메모리의 위치를 수정하는 코드가 해당 메모리에 대한 독접 접근 권한을 갖도록 요구함으로써 동일한 메모리 영역에 다중 접근으로 인한 충돌이 일어나지 않도록 한다. 이렇게 메모리를 자동으로 관리하기 때문에 프로그래머는 대부분의 경우, 메모리 접근에 대해 생각할 필요가 없다. 하지만 메모리 접근 중 충돌이 발생할 수 있는 경우들을 이해하고 있다면 메모리 접근 충돌에 더 안전한 코드를 작성할 수 있다. (근데 어차피 컴파일러가 충돌이 일어날만한 코드인지 미연에 알려줌.) 메모.. 2023. 3. 17.
Error Handling(에러 처리)에 관하여 Error Handling(에러 처리) -프로그램 실행 시 에러가 발생하면 그 상황에 대해 적절한 처리가 필요하다. 적절한 처리를 위해서 Swift에서는 에러의 발생(throwing), 감지(catching), 증식(propagating), 조작(manipulating)을 지원하는 일급 클래스를 제공한다. Error 표현 -Swift에서 에러는 Error 프로토콜을 준수하는 타입의 값으로 표현된다. Error 프로토콜은 요구사항이 따로 없는 빈 프로토콜이지만, 에러 표현을 위한 타입은 이 프로토콜을 채택한다. -Swift의 열거형은 Error를 그룹화 하고, 연관값을 통해 추가적인 정보를 제공하기에 적합하다. ex) 게임 안에서 자판기를 작동시키려 할 때 발생할 수 있는 에러 상황 enum Vendin.. 2023. 3. 16.
Where절에 관하여 Where -일반적으로 타입이나 타입 매개변수에 조건을 추가하는데 사용된다. -where 절은 크게 두 가지 용도로 사용된다. 1. 패턴과 결합하여 조건 추가 2. 타입에 대한 제약 추가 ex) 제네릭 함수에서 where func generic(number : T) where T : Equatable{ print(number) } where은 조건을 추가해주는데 사용한다고 했다. 위 코드에서 generic 함수의 T타입은 where 절을 통해 Equatable 프로토콜도 준수해야 한다는 조건을 추가해주었다. 패턴과 결합한 where절 -값 바인딩 패턴과 와일드 카드 패턴과 결합한 where 절을 보자. let tuples : [(Int, Int)] = [(1, 2), (1, -1), (1, 0), (0,.. 2023. 3. 15.
패턴에 관하여 -패턴이란 "단독 또는 복합 값의 구조" 라고 한다. -Swift에는 문법에 응용할 수 있는 여러 가지 패턴이 존재한다. 이 패턴들을 잘 사용하면 코드의 양을 줄이거나, 문법의 활용이 수월해질 수 있다. -대부분의 패턴은 switch, if, guard, for 등의 키워드와 아주 친하며 두 개 이상의 키워드가 합을 이뤄 동작한다. (특히 switch 구문에서 유용하게 사용됨.) -Swift의 패턴은 크게 두 가지로 나뉜다. 1. 값을 해제하거나 무시하는 패턴(어떤 종류의 값과도 일치하는 패턴) -단순 상수, 변수 및 옵셔널 바인딩에서 값을 소멸시키는데 사용된다. -이러한 패턴에 대한 Type Anotation을 지정하여 특정 유형의 값과만 일치하도록 제한을 걸 수 있다. -패턴의 종류에는 와일드 카드 .. 2023. 3. 15.