문제 데이터를 받아올 때, Entity를 Currency 모델로 정제 -> ExchangeRateModel과 Realm의 Model과 데이터를 비교하여 currentModel에 저장하는 메소드를 구현하고 싶었다. ExchangeRateModel과 Realm의 Model과 데이터를 비교하는 과정에서 Realm의 데이터를 받아올 수 없어 아래와 같은 오류가 발생하였다. 내 생각에는 동기적으로 ExchangeRateModel을 fetch -> Realm 데이터 fetch -> 비교하는 과정에서 에러가 발생한 것 같다. 일반적으로 Realm은 다른 스레드에서 초기화하고 다른 스레드에서 액세스하거나 수정하려고 할 때 위와 같은 오류가 발생한다고 한다. 즉, 메인 스레드에서 데이터를 바인딩하려고 할 때(다른 스레드..
문제 사용자가 원하는 국가의 환율만 제공하기 위해 Service의 fetchData() 메소드를 API 서버에서 데이터 파싱 -> 파싱 한 Entity를 Model에 맞게 정제하여 모델에 저장 -> 모델의 isChecked와 Realm 모델의 isCheck와 비교하여 true 값만 현재 모델(currencyModel) 값에 저장하여 컴플리션핸들러로 return하여 사용할 수 있게 구현했다. 현재 환율을 보여주는 CollectionView는 fetchData() 메소드를 이용하여 데이터를 받아와 바인딩하여 화면에 출력하도록 구현했다. 위의 사진과 같이 사용자가 모든 국가를 false로 하면 데이터를 받아오는 과정에서 filtering되는 데이터가 없어 현재 모델(currencyModel)에 아무런 값이 저..
동기 (Sync) ✏️ 동기(Synchronous) : 동시에 발생[존재]하는 ✅ '요청'과 '응답'이 동시에 발생한다. ➡️ 요청에 대한 응답이 동시에 발생해야한다. 즉, 내 Task가 완료되기 전까지는 다른 Task를 수행하지 못한다. ex) 식당에서 음식을 주문하려고 한다. 닭발, 계란찜, 옛날 통닭을 Sync(동기)로 주문하면(?) 닭발이 나올 때까지(응답) 계란찜과 옛날 통닭은 주문할 수 없다. Why? Sync는 '요청(주문)'과 '응답(음식 서빙)'이 동시에 발생해야하기 때문이다. 즉, 내 Task가 완료되기 전까지는 다른 Task를 수행할 수 없다는 말이 이 뜻이다. 위의 그림에서 Task1의 작업이 완료 되어야만 다음 작업이 실행되기 때문에 전체 실행 시간은 28sec(10 + 7 + 5..
프로세스 (Process) ✏️ 프로세스 : 운영체제로부터 시스템 자원을 할당받는 작업의 단위 ✅ 프로세스는 각각의 독립된 메모리 영역을 각자 할당 받는다. ✅ 프로세스끼리는 서로의 변수나 자료구조에 대해 절대 접근할 수 없다. ✅ 프로세스 A가 프로세스 B의 자원에 접근하려고 하면, 프로세스간 통신(IPC)를 사용해야한다. (파일, 소켓 등) ✏️ 멀티 프로세스 : 하나의 프로그램을 여러 개의 프로세스로 구성하여, 각 프로세스마다 하나의 Task씩 처리하도록 하는 프로세스 ✅ 프로세스는 독립된 메모리 영역을 각자 할당받기 때문에 프로세스끼리 서로의 자원에 접근할 수 없다. 따라서 독립된 구조이기 때문에 안정성이 높다. ✅ 멀티 프로세스는 각각의 프로세스들이 동시에 진행되는 것처럼 보이지만, 실제로 CP..