분류 전체보기 260

4. GCD (Grand Central Dispatch)

GCP (Grand Central Dispatch) 거대한 중심이되는 부분,조각?? IOS 개발 시 Concurrency(동시성)을 제공해 주기 위해서 우리가 사용할 수 있는 API는 GCD있다. --> IOS 가 네트워킹을 하기 위해 사용하는 것이 URLSession 이다. --> 네트워킹 과정에서 동시성 기능을 구현 가능캐 하는 것이 GCD 이다. 애플에서는 GCD를 다음과 같이 설명한다. Guarantee: 굳은약속, 보증서, 보증하다 해야할 일들을 만들어 GCD에 넘기면 시스템에서 알아서 Thread를 할당해서 안전하게 수행 시켜준다!! 그 해야할 일은 Code Block을 의미한다. 즉, Code Block를 GCD에 넘기면 알아서 수행해준다~~ GCD는 FIFO queue를 관리하고 제공한다...

3. Concurrency (동시성)

Concurrency (동시성) 한번에 여러개 수행!! App이 한번에 여러가지 일을 수행해야하는데 어떤 일을 하는지 살펴보자 작업번호 사용자 인터랙션(User Interaction 상호작용) 처리 네트워킹 백그라운드에서 파일 다운로드 파일 저장하고 읽기 네트워킹으로 인해 사용자 인터랙션을 못하거나 다른 것이 동작하지 않는다면 앱은 느려지고 아무도 사용하지 않게 될 것이다. 그렇기에 Concurrency는 반드시 필요한 작업이다. 컴퓨터 공학에서는 이러한 작업을 Thread 라고 한다. 우리의 폰, 컴퓨터 입장에서는 Thread 1, 2, 3, 4 모두가 동시에 처리 되어야 한다는 것이다. 그렇기에 context switching을 통해 왔다리 갔다리 하면서 Thread를 동작시킨다. 너무 빨라서 동시에..

2. 네트워킹 하는 것을 확인할 수 있는 툴

네트워킹 하는 것을 확인할 수 있는 툴 : Postman Postman: 네트워킹 하는 것을 확인할 수 있는 툴 https://www.postman.com/downloads/ Download Postman | Try Postman for Free Try Postman for free! Join 13 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster. www.postman.com 구글의 document를 응답받은 것이다. 실제 코드를 보여주기 위해 렌더링을 시켜준것이 위의 사진이다. 렌더링(rendering): 렌더링 또는 이미지 합성은 컴퓨터 프로그램을..

1. 네트워킹에 필요한 기초지식

네트워킹에 필요한 기조지식 네트워킹이란 서버와 앱 간의 데이터를 주고 받는 것이다. 어떻게 주고받을까? HTTP라는 방법으로 RESTAPI를 이용해서 JSON데이터를 주고받는다. HTTP는 우리가 쓰는 웹 브라우져 주소 좌측에 보이는 글자가 있는데 본적이 있는가? 이것은 서버에서 데이터를 받을 때 HTTP방법을 이용하자고 전세계에서 약속한 것이다. 이렇게 약속한 방법을 통해서 RESTAPI를 서버에서 구성해서 JSON 데이터 파일을 받게된다. JSON 데이터 파일은 전세계에서 약속한 것은 아니지만, 대부분의 회사에서 사용하고 있는 데이터 타입이다. HTTP 기초 HTTP: HyperText Transfer Protocol HTTP는 클라이언트(웹 브라우져, 모바일 앱)과 서버 간의 데이터를 어떻게 주고받..

0. Networking

네트워킹 넷플릭스 애플뮤직 페이스북 언제 네트워킹이 필요할까?? 컨텐츠의 경우에는 암호화와 워터마킹이 된 영상이 내려온다. 그래서 영상유출시 누가 했는지 다 알 수 있다. 이런 앱들이 Networking이 안된다면? 이 앱 모두 정상작동을 하지 못한다. 데이터의 전달이 되지 않으면 안되니깐!! Networking + IOS 우리는 IOS에서 Networking 작업을 어떻게 할 수 있을까? —> URLSession IOS에서는 URLSession class를 통해서 네트워크 작업을 할 수 있다. 이론 네트워킹이라는 작업은 상당히 느린 작업이다. 네트워크보다 빠른 작업은 메모리 접근, 디스크 파일 읽기 등. 이것보다 네트워킹은 상당히 느린 작업이다. 앱에서는 앱의 반응성이 상당히 중요하다. 반응이 느리면 ..

14. Closure Logic Implement

doneButtonTappedHandler, deleteButtonTappedHandler 우리는 현재 collectionView에서 Cell을 어떻게 표현하는가에 해당하는 프로토콜에 doneButtonHandler과 deleteButtonHandler의 기능을 구현하지 않았다. 기억을 상기시키기 위해서 해당 코드를 살펴보자. TodoListCell에는 Closure로 정의된 doneButtonTapHandler과 deleteButtonTapHandler이 존재한다. checkButtonTapped를 살펴보면 checkButton이 눌리게 되었을 때의 변경되어야할 상태 값을 변수에 지정하였다. 그렇다면 그 지정한 값들이 checkButton이 눌려졌을때 업데이트되어 Cell에 보여지게 해야할 것이다. 그..

13. AddButtonTapped

Data Append 이제 데이터를 실제로 추가하는 기능만 추가하면 끝이다!!!! 우리는 +, add 버튼이 눌렸을 때 무엇을 해야할까? 우선 TextField에 text가 존재하는지 여부를 판단해야한다. createTodo를 호출하여 todo객체를 생성한다. 이를 todoListViewModel에 add 하면 된다. collectionView를 reload한다. —> 그래야 ViewModel에 있는 추가된 데이터들이 CollectionView에 표시될 것이다. inputTextView를 reset한다. isTodayButton도 default값으로 reset한다.

12. Tap Gesture Recognizer

이제 키보드를 내리는 작업을 할 것이다. 키패드 부분이 아닌 영역에 클릭하게 되면 키패드가 내려오도록 구현하려 한다. Object library를 살펴보면 “Tap Gesture Recognizer” 이 존재한다. Tap Gesture Recognizer 는 다른 View에 붙혀서 사용가능하다. 우리는 TGR을 전체 View에 붙혀서 사용할 것이다. 그리고 Tap을 하게 되면 이를 인지하게 되고 이를 통해 추가 코드로 부터 키패드를 내리도록 하겠다. 정리하면 현재 전체 View나 버튼 같은 곳이 아닌 곳을 Tap을 하게 되면 뭔가를 지정하지 않았으니깐 누른지 모른다고 생각하면 된다. 그렇다면 Tap을 했다는 것을 인지해야 하는데 이는 Tap Gesture Recognizer을 통해 Tap을 인지하게 된다..

11. Keyboard

Text Field를 삽입하고 선택하게 되면 FirstResponder()에 반응하여 키패드가 등장한다. 쉽게 표현하면 현재 집중되어 있는 요소가 Text Field라는 의미이다. 그렇다면 keyboard를 올리고 내리는 동작에 대해 구현하도록 하자. Today Button isTodayButtonTapped에 대한 구현을 완료하였다. Button이 눌린다는 것은 눌리는 상태를 저장할 변수(outlet)과 누르는 행위(action)이 존재한다. 여기서 배워야 할 것은 코드를 구성하는 구조이다!! View 높이 조절 현재 두개의 차이점은 키패드가 등장함에 따라 text Field가 포함된 View의 위치가 이동하냐 안하냐의 차이이다. 이제 키패드를 등장시키는 코드와 View의 이동을 함께 구현해보자 우선 ..

10. input text View 만들기

input text View 만들기 우선 View를 collectionView와 동일한 scope인 전체 View에 대해 삽입한다. 안에 text Field와 Button을 만들고 아이콘 수정 및 Auto Layout을 설정한다. 여기서 중요한 점은 Text Field를 누르게 되면 키패드가 등장할 것인데, 숫자, 특수문자, 한글, 영어 등 다양한 키패드가 존재하는데 이를 선정 해주어야 한다. default로 설정한 다음 대부분의 추가기능은 사용하지 않는 것으로 하자. 현재 ViewController애서 각 변수들을 연결해줄 것이다. 여기서 inputViewButton의 경우 Constraint인데 이는 text View를 클릭할 경우 키패드 만큼 View의 Bottom이 올라가야 하기에 지정해준 것이다..

9. Storage 구현

Storage 구현 뼈속까지 이해한다기 보다는 전체적인 큰 틀과 어떻게 구성되어 있는지를 중점으로 봐라잉~ https://developer.apple.com/documentation/foundation/filemanager Apple Developer Documentation developer.apple.com https://zeddios.tistory.com/440 iOS ) FileManager를 이용해 파일/폴더 만드는 법 안녕하세요 :) Zedd입니다. 제목이 뭔가 추상적인데.....이 글은...저를 위한....공부... FileManager를 이용해 파일/폴더 만드는 법 파일 및 디렉토리와 관련된 가장 기본적인 작업 중 일부는 파일 시스 zeddios.tistory.com https://hcn1..

8. Storage 이론

Storage 클래스는 뭐하는 놈들일까? 우리는 이전에 TodoManager에서 saveTodo()와 retrieveTodo()를 정의 하였다. 이 메소드들은 todos에 존재하는 객체들을 json파일이라는 형식으로 Read/Write할 수 있는 기능을 한다. 그리고 그 json 파일을 실제 내 디스크에 저장하도록 Read/Write하는 기능을 한다. 현재 데이터는 Todo형식으로 되어있고, 데이터는 TodoManager관리하고 있다. 그런데 이 데이터들은 CRUD와 같이 변화가 생겼을 때 상태들을 디스크에 저장하고 저장된 데이터를 불러와야 할 것이다. TodoManager에서는 add, delete, update를 하게 되면 saveTodo()를 호출하여 디스크와의 싱크를 하게 된다. saveTodo(..