[iOS] 메모리 구조이번 글에서는 개발자가 작성하는 코드가 메모리에서 어떤 부분에 저장되는지 알아보려고 한다. 메모리 구조프로그램이 실행되면 운영체제(OS)는 메모리(RAM)에 프로그램을 위한 공간을 할당해d0ngurrrrrrr.tistory.com 앞서 메모리 구조(코드, 데이터, 힙, 스택)에 대해서 공부를 하였는데, 이 중 힙, 스택의 장/단점을 보면서 이 둘에 대해 더 알아보겠다고 했는데, 이번 글에서는 힙, 스택과 더불어 struct, class까지 자세하게 알아보자. 힙, 스택 언제 쓰면 될까? 앞선 글에서 스택은 메모리가 한정되어 있기에너무 큰 메모리는 할당할 수 없다고 하였다. 따라서 테이터의 크기를 모르거나, 스택에 저장하기엔 큰 데이터는 힙에 할당하고 그 외엔 스택에 할당하면 된다..
이번 글에서는 개발자가 작성하는 코드가 메모리에서 어떤 부분에 저장되는지 알아보려고 한다. 메모리 구조프로그램이 실행되면 운영체제(OS)는 메모리(RAM)에 프로그램을 위한 공간을 할당해 준다.공간은 총 4가지(코드, 데이터, 힙, 스택)의 공간으로 나눠져 있다. 빌드를 통해 실행파일로 만들면, OS는 정보를 파악하여 메모리 공간에 할당하고그 이후, OS는 코드를 읽고 쓰며 동작을 시작하게 된다. 그럼 하나하나 짚고 넘어가 보자! 코드(Code) 영역 우리가 작성한 소스 코드는 기계어 형태로 저장이 된다.컴파일 타임에 결정되며, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장된다. 데이터(Data) 영역 전역변수, static 변수, 상수, 타입 메타데이터 등이 저장되는 곳이다.프로그..
모든 iOS 앱은 URLSession을 사용하고 있다고 해도 과언이 아니다. 이번 글에서는 거의 모든 앱에서 사용하는 URLSession에 대해서 알아보자. URLSession?? iOS 앱에서 서버와 통신하기 위해 애플에서 제공하는 API이다. URLSession을 활용하면 iOS 앱이 실행 중이지 않을 때도 백그라운드에서 다운로드가 가능하다. 그리고 URLSession을 프로젝트에서 사용할 수 있겠지만 이를 추상화한 Alamofire나 Moya를 보통 많이 사용한다. 즉, Alamofire나 Moya 역시 URLSession을 기반으로 동작을 하는 것이기 때문에, URLSession에 대해 알아둘 필요가 있다. URLSessionConfiguration URLSessionConfigurati..
UIVIewPropertyAnimator을 활용해서 collectionViewCell의 색을 바꾸려고 했다. 그런데 앱이 백그라운드 상태로 갔다가 다시 포그라운드 상태로 돌아왔을 때, 애니메이션이 다 끝난 상태로 되어버리는 버그가 발생을 했다. 이 글에선 버그를 해결한 방법에 대해 설명해보려고 한다. 버그 발생 아래 영상처럼 백그라운드 상태로 갔다가 다시 포그라운드 상태로 돌아오면 애니메이션이 멈춘 상태가 아니라 결과가 나타난 채로 보여진다. 정확히 왜 이런 버그가 발생하는지 이유는 아직 찾지 못했다. 이유는 앱이 백그라운드로 전환되면 iOS는 리소스를 절약하기 위해 애니메이션을 포함한 다양한 작업을 일시 중지하거나 중단하기 때문이다. 따라서 애니메이션의 상태를 관리하여 해결해야한다. 해결 방법..
Realm은 iOS 앱을 만들 때, 데이터베이스로 CoreData에 비해 쉽게 사용할 수 있는 라이브러리이다. 안드로이드를 비롯해 여러 플랫폼에서 지원하기에 호환성이 좋아서 많은 서비스에서 Realm을 사용한다. 그런데 realm에 복잡한 데이터가 앱을 설치한 처음부터 있었으면 하는 개발자도 분명 있을 것이다. 하지만 이에 관련된 자료가 없는 건지, 내가 못 찾는 건지 찾을 수가 없었다. 그래서 방법을 고민하다가 내가 찾은 방법을 공유해보려고 한다. (+ 에러 상황과 해결 방안까지) 0. Realm 데이터 준비하기 단순한 데이터를 Initial Data로 추가할 때에는 사실 Realm 데이터를 준비할 필요 없이, 코드로 저장을 하면 된다. 그러나 앱에서 저장하는 기능이 많으면 많을수록, 다양한 기능을 사..