어느정도는 알고있었지만 실제로 클론 안하고 만들어보니 아직 parseJSON()함수 만드는 것도 제대로 하지 못하는 것을 보고 다시 한번 더 깊게 공부해야겠다고 다짐했다
각 나라의 화폐를 고르면 비트코인의 금액이 유로나 달러 등 나라의 화폐단위로 나온다!
즉 유저가 picker를 스크롤해서 굴려서 화폐를 선택하면 coinAPI와 네트워킹해서 알맞은 값을 전달해준다
역시 네트워킹해서 API를 가져오는 부분이 중점이다
추가로 프로토콜을 써서 delegate를 가져오는 방법 또한 깊게 배웠다
protocol CoinDelegate {
func didFailWith(error: Error)
func didIpdatePrice(price: String, currency: String)
}
이번 앱에서 CoinDelegate라는 프로토콜을 만들어서 바로바로 API로 요청해서 currency를 업데이트 했고 에러를 표시하게 했다
일단 delegate는 위임이다 즉 사용자 인터페이스 제어에 관한 권한을 가질 수 있다는 것을 말한다.
내가 CoinDelegate라는 delegate를 적음으로써 이 안에 있는 메서드의 이벤트를
CoinDelegate라는 객체에서 처리해준다!
이렇게 하면 이와 관련된 이벤트들에 대해 따로 처리하지 않아도 되기때문에 편함!
delegate쓰는법
1.class가 delegate를 채택해야한다! -> ex) extension으로 빼서 적으면 깔끔해보인다
2.coinManager.delegate = self 로 작성해서 self의 제어 권한을 넘겨준다!
3.delegate는 protocol이기 때문에 option이 앞에 안적힌 함수에 대해 무조건 호출해줘야한다!!
extension ViewController: CoinDelegate {
func didUpdatePrice(price: String, currency: String) {
DispatchQueue.main.async {
self.bitcoinLabel.text = price
self.currencylabel.text = currency
}
}
}
이번 앱 만들때 적었던 부분이다.
DispatchQueue.main은 메인 스레드에서 전역적으로 사용 가능한 serial queue이다.
앱의 실행에 있어서 끊임없이 앱의 이벤트를 처리하고 있습니다.
일단 동기인 sycnc와 비동기인 async가 있다
DispatchQueue.main.sync이면 작업이 다 끝날 때 까지 현재의 queue는 block되어 기다린다.
그렇기에 main이 sync면 기다리기 때문에 작동을 멈춘다!!
비동기인 async는 병렬처리를 해줘서 현재의 queue에 컨트롤을 넘겨주고 작업이 끝나기 전까지 기다리지 않는다!
데이터를 로드하거나 특정 무거운 작업을 실행하게 될 때 어플리케이션의 UI는 느려지거나 멈추게 됩니다.
DispatchQueue.main.async는 클로저 안의 실행문을 작업을 대기열로 보내 비동기로 작업을 실행하여 동시에 2가지 이상의 task를 수행할 수 있도록 도와줍니다.
4가지로 나눌 수 있다.
url설정!
RestAPI방식으로 연결하려면 URL이 필수이기 때문에 먼저 url을 설정해준다!
urlSession을 통해 HTTP를 이용해서 네트워킹 연결
URLSession은 URLSessionConfiguration을 통해 생성할 수 있습니다.
이렇게 생성된 URLSession을 통해 한 개 이상의 URLSessionTask를 생성할 수 있으며, 이 URLSessionTask를 통해 실제로 서버와 통신을 할 수 있습니다.
default 방식은 디스크 기반의 캐싱을 뜻한다! -> 임의의 공간에 임시저장해서 빠르게 가져올수있다! 라고 생각하면 편하다
dataTask설정
task객체는 일반적으로 session을 통해서 객체가 서버로 요청을 보낸 후 응답을 받을 때 url기반의 내용들을 받는거!
session.dataTask()의 경우 data객체를 통해서 받는다!!
task.resume()으로 네트워킹 시작
dataTask를 시작 시키기 위해 마지막에 적어준다!! 필수!!!
아직까지 아는 내용들을 제대로 조합하지 못하는 모습을 보면서 더 많이 코딩해봐야겠구나 느꼈고,
앱이 배울수록 재밋어서 확실히 이 분야로 직업을 삼는다면 내 스스로가 행복할 것이라고 생각한다.
그러기 위해서는 네이버 부트캠프 ㅜㅜ 알고리즘 공부에 더 많이 시간을 쏟아야하는데 ㅜ
더 열심히 해보자!!