DispatchQueue는 앱의 메인 스레드 또는 백그라운드 스레드에서 작업을 직렬 또는 병렬로 실행을 관리하는 오브젝트입니다. DispatchQueue는 DispatchObject를 상속하고 있는 클래스입니다. DispatchObject는 OS_object를 상속하고 있으며 많은 디스패치 오브젝트 타입을 가집니다. 예를 들어 DispatchQueue, DispatchGroup, DispatchSource등이 있습니다. 또한 기본적인 디스패치 오브젝트 인터페이스를 사용하면 메모리 관리, 실행, 일시중지 및 재실행 등을 수행할 수 있습니다. 디스패치 큐는 앱이 블록 개체 형태로 작업을 제출할 수 있는 FIFO 큐입니다. 디스패치 큐는 작업을 순차적serially으로 또는 동시 concurrently에 실행..
WeatherAPI를 사용하는데 JSON에 timezone이 주어졌다. 나는 timezone을 가지고 현지 시간을 알아야 하는데 어떻게 해야 할지 감이 안잡혔다. timezone이 애초에 뭔지 모름. 그렇게 해서 찾게 된 timezone의 개념. timezone(시간대)은 영국의 그리니치 천문대를 기준으로 지역에 따른 시간의 차이이다. 지구의 자전에 따른 지역 사이에 생기는 낮과 밤의 차이를 인위적으로 조정하기 위해 고안된 시간의 구분선을 일컫는다. 시간대는 UTC를 기준으로한 상대적인 차이로 나타낸다. 아 그럼 나는 해당 지역의 시간 차이를 가지고 해당 지역의 시간대를 알수 있는거구나. 그럼 시간대 차이는 어떻게 되는거지 🤷♀️ 아래가 세계 시간대 차이를 나타낸 이미지다. 왼쪽 세계지도 아래에 나..
TCP/IP에서 트랜스포트 계층은 애플리케이션 계층과 인터넷 계층 사이에 위치한다. 인터넷 계층의 역할이 데이터를 수신지 컴퓨터까지 전달하는 것이라면, 트랜스포트 계층의 역할은 컴퓨터가 받은 데이터를 애플리케이션까지 전달하는 것이다. 트랜스포트 계층의 TCP 프로토콜은 - 수신지에 데이터가 정확하게 전달되도록 전송 속도를 조절하거나 도달하지 않은 데이터를 재전송한다. - 수신지의 통신 환경에 맞춰 데이터 크기를 정하거나 연속된 데이터를 몰아서 보낼 개수를 정한다. - 도달하지 않은 패킷이 있다면 재전송을 요청한다. 트랜스포트 계층에는 인터넷 계층에서 전달한 다양한 종류의 패킷이 들어온다. 이 패킷들은 애플리케이션 계층에 있는 애플리케이션들에게 각각 전달되어야 하는데, 이때 어느 애플리케이션으로 보내져야 ..
HTTP 요청 URL 특정 웹 페이지를 받아보기 위해서 HTTP 요청을 보낸다. 이때 URL(Uniform Resource Locator)이라는 문자열을 사용한다. 스키마는 사용하는 프로토콜을 명시한다. 호스트는 서버의 이름 혹은 역할을 명시한다. 도메인은 서버를 운영하는 조직을 명시한다. 디렉터리는 서버 내의 디렉터리를 명시한다. 파일은 해당 디렉터리 내의 파일명을 명시한다. HTTP 상태 코드의 의미 100 Continue 서버가 헤더는 받았고 바디가 올 것을 기다리고 있음. 101 Switching Protocols 클라이언트가 서버에게 프로토콜을 바꾸자고 제안했고 서버도 수락함. 200 OK 요청이 성공했고 요청한 결과 데이터를 응답으로 보냈음. 201 Created 요청이 성공했고 새로 만들어진..
컴퓨터 네트워크 안에서는 다양한 프로그램과 데이터 그리고 통신 자입가 한데 어우러져 동작하고 있다. 이러한 동작들은 각가의 역할에 따라 크게 애플리케이션 계층, 트랜스포트 계층, 인터넷 계층, 네트워크 인터페이스 계층의 4개 계층으로 분류되고, 위 아래 인접한 계층끼리 서로 정보를 주고 받으면서 네트워크 통신을 한다. TCP / IP 4개의 계층은 애플리케이션 계층 트랜스포트 계층 인터넷 계층 네트워크 인터페이스 계층으로 구성되어 있다. 애플리케이션 계층의 역할은 사용자가 실제로 체감할 수 있는 서비스를 제공하는 것이다. 예를 들어, 웹 브라우저와 웹 서버는 애플리케이션 계층에 속하는 프로그램이고, 이때 주고받은 데이터는 페이지를 요청하는 URL과 그 응답 결과로 전달되는 웹 페이지 데이터다. 트랜스포트..
프로그램이 도중 정수형 숫자 타입을 할당하긴 해야 하는데 정확히 어떤 타입인지 알 수 없는 경우, numericCast 함수를 호출해서 스위프트가 동적으로 숫자 타입을 통일할 수 있습니다. 기존 코드에서 서로 다른 정수형 타입으로 선언한 변수 i와 변수 j가 있는 경우, i = numericCast(j) 코드를 실행하면 변수 j의 정수형 타입이 변수 i의 타입에 맞춰지게 됩니다. 예를 들어, i는 Int16, j는 Int32 서로 다른 정수형 타입으로 i와 j를 선언했습니다. 그리고 j를 변경해주려 하면 작성한 부분에서 에러가 발생하게 됩니다. Cannot assign value of type 'Int16' to type 'Int32' Replace 'i' with 'Int32(i)' 에러 메세지는 In..
Unit Test를 하기 위해 파일을 추가해 유닛 테스트를 하려고 했다. 프로젝트에 파이어베이스 관련 라이브러리를 사용하기 있었기 때문에 Podfile에 Firebase/Core, Firebase/Database이 추가되어있었다. XCTest모듈이 import되어있고 XCTestCase를 상속받은 클래스 파일에 @testable import Only5라고 추가하려 했으나 에러가 발생했다. (Only5는 프로젝트 이름) 그런데 에러가 발생했다. Missing required module 'Firebase' 에러 메시지 내용은 'Firebase'모듈이 누락되었다고 적혀있었다. 이거 때문에 빌드도 안되는데 이럴 때는 Podfile에 search_paths를 추가해주면된다. 나는 Podfile에 아래 코드를 추..
스택은 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO)로 되어 있습니다. 넣을 땐 Push라고 하고 넣어준 자료를 꺼내는 것을 Pop이라 합니다. iOS에서 스택은 대표적으로 navigation stack이 있습니다. 공식문서에 살펴보면 계층에 대한 드릴 다운 인터페이스를 제공하기 위해 스택으로 관리한다고 나와있습니다. 스택과는 반대대는 개념인 큐를 살펴봅시다. 큐는 먼저 집어 넣은 데이터가 먼저 나오는(FIFO) 구조로 저장하는 형식을 말합니다. iOS에서는 대표적으로 Dispatch Queue가 있겠죠. 비동기식으로 동시에 수행 할 수 있는 손쉬운 방법이죠. 여기까지 스택과 큐의 특징을 살펴봤습니다. 그럼 본론으로 Q. 스택 두개로 어떻게 큐로 만들 수 있을까요 A. 스택 두개를 inB..
- Total
- Today
- Yesterday
- objc
- wwdc
- 스위프트UI
- 책
- 딥러닝
- swiftUI
- Deep learning
- 애니메이션
- ReactiveX
- 책 후기
- Algorithm
- SWIFT
- string
- rxswift
- 머신러닝
- ARC
- 스위프트
- Animation
- iOS SwiftUI
- Xcode
- 알고리즘
- leetcode
- swift5
- objective-c
- RX
- 문자열
- stanford SwiftUI
- 독서
- 책 추천
- ios
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |