본문 바로가기

iOS10

서버없이 Networking Test하기 with URLProtocol Networking Test 요즘에는 Network를 사용하지 않는 앱을 찾아보기 힘들 정도로 Network를 빼놓고서 앱을 얘기하기 힘들다. 따라서, Network 작업을 처리하는 로직을 Test하는 것도 매우 중요한 일 중 하나가 되었다. 하지만, Server의 응답을 받아서 처리를 해야하는 Network작업은 Test시에 Server의 상태에 상당히 의존적일 수 밖에 없다.이는 Test가 빠르지 못하고, 독립적이지 못해서 같은 요청을 보내더라도 똑같은 결과를 받지 못한다는 의미가 된다.(F.I.R.S.T 원칙) 어떻게 iOS에서 위 문제를 해결 할 수 있을지 Network작업을 처리하는 가장 기본적인 방법중 하나인 URLSession을 이용해서 알아보자. Network 작업이 진행되는 과정 모두 .. 2022. 5. 15.
iOS Cache Cache? 캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. - 위키백과 정의에서 볼수 있다시피, 다시 계산하거나 데이터에 접근하는 시간을 줄이기 위해 미리 값을 복사해 놓는 임시 저장소를 의미한다. 특히, 서버와의 작업이 있을때 서버에게 지속적으로 요청하는 것이 아니라, 메모리에 저장되어 있는 Cache를 사용하기 때문에 적절히 사용을 한다면 DBMS나 서버의 부하를 줄이고 .. 2022. 4. 24.
Responder Chain HItTest의 목적이 어떤 View가 Touch를 받을지 찾는 것이라면, Responder Chain은 HitTest다음에 일어나는 일으로써 이벤트에 따라 어떤 Responder가 이벤트를 받을지를 정해주는 과정이다. 이 과정이 마치 Chain처럼 연쇄적으로 연결이 되어있다고 해서 Responder Chain이라 불리운다. HitTest로 View를 찾았지만 그 View가 이벤트를 처리를 안할 수도 있기 때문에, 만약 이벤트를 처리를 못했다면 다음 Responder를 상속받은 View로 넘어갈 것이다. 이렇게 이벤트가 처리가 될때까지 Chain으로 이어져 있는것. 만약 끝까지 갔는데도 처리가 안되면 이벤트는 버려짐. UIResponder? Responding하고 Event를 핸들링 하기 위한 추상적인 .. 2022. 3. 29.
iOS에서 일어난 touch가 처리되는 과정. 1. iOS 기기에 터치가 일어남. 2. iOS 하드웨어의 어떤 물리적 위치에 눌려졌는지 확인. 3. UIApplication 객체에게 터치가 일어났다고 알려줌. 4. UIApplication은 눌려진 좌표중에서 가장 화면 위에있는 혹은 가장 깊이 View를 탐색해서 터치가 일어난 View를 찾는다 왜냐하면,우리가 사용하고 있는 기기의 뷰들은 모두 SuperView위에 AddSubView가 된 구조로 많이 이루어져있기 때문에 한 좌표에 여러 뷰가 있을 수 있다. 그 중, 터치가 일어나고 처리되야할 View를 찾는 것. (이 과정을 hitTest라고도 한다.) 이 과정에서는 FirstResponder를 사용하지 않음! 터치 이벤트(UITouch Event)와 뷰는 연결됨! 또한, 우리가 임의적으로 Even.. 2022. 3. 29.