4주차는 무려 3가지 앱을 만들었다. 타이머도 배우고, 날씨 api를 받아와 날씨를 알렬주는 앱, 그리고 마지막으로 코로나맵을 배웠다. 
사진은 날씨앱이다. openweathermap에서 api를 가져왔다. textfield에 입력한 값을 openweathermap에서 가져와 정보들을 출력해주는 앱이다.
코로나맵에서 alamofire를 통해 http네트워킹에 더 깊게 공부할수 있었다. 확실히 앱을 배우는 양이많아 지다 보니 배우는 개념들이 점점 많아졌다.
하이퍼텍스트 전송하기 위한 프로토콜
client에서 server에 request하면 그에 맞는 결과를 response해
줌! 여기서 패킷으로 보냄
날씨앱을 제작하다보면 dispatchqueue.main.async라는 매서드가 나온다. 이것이 제대로 이해가 가지 않았다. 공부해보니 작업항목의 실행을 관리하는 클래스라고 한다.serial방식과 concurrent방식이 있는데
serial은 작업을 순차적으로 하나씩 하는 것이고 concurrent는 이전 작업이 끝나기 전에 병렬식으로 대기열에있는 작업을 thread방식을 이용해 실행. 메인쓰레드(인터페이스 쓰레드)가 serial방식을. global쓰레드(백그라운드 쓰레드)는 concurrent방식을 사용. 그래서 코드실행이 오래걸리는 것들은 global thread로!!
DispatchQueue.main.async
결국 이것은. 클로저안의 실행문 작업을 메인쓰레드 대기열로 보내 비동기작업실행하여 2개이상의 task수행!!
코로나맵에서 배운 새로운라이브러리이다. http네트워킹을 위한 다양한 메소드를 지원해준다. 연결가능한 request,response제공, 업로드 , 광범위한 단위테스트도 지원. urlsession보다 좋은점이 코드가 간소화 되어있어 가독성이good! 여러기능이 있다.
외부라이브러리 관리하기 쉽도록 도와줌. 각 라이브러리 깃주소에 가면 코코아팟을 이용한 설치방법이 있는데 pod '라이브러리'입력후 터미널에서 pod install명령어 치면 그 라이브러리 다운됨. 라이브러리를 프로젝트에서 사용하기 위해, xcworkspace에서 개발!
코코아팟과 비슷한 기능인데 애플 자체 개발이다. 그냥 xcode에서 바로 다운받아서 되어 코코아팟보다 편리하다.
클로저가 함수로부터 escape한다는 것 : 해당 함수의 인자로 클로저가 전달되지만 함수가 반환된 후 실행한다!!
A 함수마무리된 상태에서만 B함수 실행되도록 작성가능 > 실행순서지정
같이 배운것이 completionhandler. 결국 이개념은 우리가 이 함수나 데이터 받는것을 끝난후 실행하여줄것이다~비동기프로그래밍에서 매우중요!!