
디스패치 세마포어를 알아보기 전에 세마포어는 무엇일까요? 세마포어는 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것입니다. 뮤텍스는 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것입니다. 또한 세마포어는 뮤텍스가 될 수 있습니다. (그 반대는 불가합니다.) 이제 디스패치 프레임워크 내에 있는 디스패치 세마포어 클래스에 대해서 알아보겠습니다. 디스패치 세마포어를 사용하게 된 계기는 async한 작업을 sync하게 변경시켜보는 시도에 세마포어를 사용하면 어떨까 싶었고, 한 번도 사용해보지 못했던 클래스라 궁금했었기에 사용해봤습니다. 그럼 애플에서 제공하는 공식문서를 살펴봅시다. 디스패치 세마포어란 다중 실행 콘텍스트에서 자원 접근을 제어하는 객체입니다. 디스패치 세마포어는 전통적..

수요일에 받은 코드 리뷰를 통해 좋은 말씀들을 많이 해주셔서 하나씩 학습해 정리해보려 합니다. 그중에서도 제네릭과 프로토콜을 활용해 dequeueReusableCell을 어떻게 처리하는지 알아보았습니다. 먼저 테이블 뷰에 테이블 뷰 셀을 나타내게 하려면 어떻게 하시나요. 테이블 뷰는 데이터 자체를 관리하지는 않고, 표현되는 데이터만 관리합니다. 그래서 우리는 UITableViewDataSource를 채택해 필수 메소드를 적어줍니다. 이 친구들이 관리를 합니다. 아래는 UITableViewDataSource에 필수 메소드를 작성한 코드입니다. // Return the number of rows for the table. override func tableView(_ tableView: UITableView..

디스패치 그룹은 단일 장치와 같이 task들의 그룹을 모니터 하는 것입니다. 디스패치 그룹을 사용하게 된 이유는 여러 개의 request를 날렸고 response가 끝나는 시점을 잡아 한 번에 UI를 업데이트시키기 위해 DispatchGroup을 사용하게 되었습니다. DispatchGroup을 사용하기 이전에는 어떻게 처리했냐면.. 음 프로퍼티 옵서버를 사용했습니다. didSet을 사용하면 프로퍼티가 변경된 바로 직후를 파악할 수 있어서 그냥 프로퍼티 옵저버를 사용했습니다. 다시 말해 API콜을 날리면 response데이터로 weatherInfo을 하나씩 받게 되고, 받은 데이터를 weather에 append 해주는 방식으로 처리했습니다. 위와 같이 제가 초기에 구현했던 코드로 여러 reponse데이터를..

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과 그 응답 결과로 전달되는 웹 페이지 데이터다. 트랜스포트..
- Total
- Today
- Yesterday
- ios
- 책
- string
- 스위프트
- leetcode
- 문자열
- 딥러닝
- ReactiveX
- Animation
- 알고리즘
- swiftUI
- 책 추천
- foundationmodels
- Algorithm
- 책 후기
- 머신러닝
- Deep learning
- wwdc
- swift5
- objc
- objective-c
- 독서
- SWIFT
- 스위프트UI
- 애니메이션
- ARC
- rxswift
- iOS SwiftUI
- RX
- Xcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |