본문 바로가기

전체 글131

메모리에 관하여 메모리 구조 -메모리는 연산을 수행하는 CPU를 보조하는 역할로 입력값, 함수, 출력값 등을 저장한다. (변수와 상수, 함수, 리턴값 등) -메모리는 물리적으로 하드디스크, 램, 레지스터, 캐쉬로 구성되는데 각각 특성에 따른 비용과 속도가 다르고, 이에 따라 용도도 다르다. 그럼 개발자가 변수나 함수 등을 어느 메모리에 저장해야 하는지 지정해주어야 하나? -> 아니다. 운영체제가 물리적인 메모리를 가상 메모리로 만들어 관리하기 편하게 해준다. -프로그램이 실행되면 운영체제(OS)에서 이 프로그램을 위한 가상 메모리 공간을 할당해준다. 공간은 1. 코드 영역, 2. 데이터 영역, 3. 힙 영역, 4. 스택 영역으로 나누어져있다. -우리가 메모리를 이해하는 것은 성능 최적화, 메모리 누수 방지, 버그 해결 .. 2022. 9. 25.
GCD(Grand Central Dispatch)와 DispatchQueue에 관하여 IOS 프로그래밍을 하다보면 DispatchQueue를 필수적으로 접하게 되는데 이 DispatchQueue가 GCD와 관련이 있기 때문에 GCD와 함께 DispatchQueue를 알아 볼 예정이다. 1. GCD -IOS 멀티 쓰레딩을 위해 NSOperation과 GCD라는 API를 제공한다. GCD는 멀티쓰레딩을 위한 C언어 기반의 저수준 API라고 한다. -GCD는 멀티코어 시스템에서 Concurrency Programming(동시성 프로그래밍)을 하기 위해 애플에서 제공하는 API이다. 프로그램 작업을 효율적으로 처리(동기화작업이나 쓰레드 분업 등)하기 위해서 GCD를 사용한다, 여러 개의 스레드에 작업을 분배시키기 위해 GCD를 사용한다 정도로 이해하면 좋을 것 같다. -위에서 "멀티쓰레딩을 위한.. 2022. 9. 23.
직렬(Serial)과 동시(Concurrent) 1. 직렬(Serial) -Serial의 사전적인 의미에 "순차적인" 이 있다. 여기서 앞서 배웠던 동기 개념과 헷갈릴 수 있는데, 동기는 "요청에 대한 응답이 동시에 발생" 이라는 단일 작업에 대한 특성을 말하는 개념이다. 하지만 직렬은 단일 작업이 여러 개 있을 때 작업들을 순차적으로 하나씩 처리하는 것을 말한다.(SerialQueue는 한 번에 하나의 작업만 실행시킬 수 있음.) -직렬 처리는 작업들을 분산 처리할 때 다른 한 개의 스레드에서만 처리하는 것을 말한다. -작업 각각의 동기 처리, 비동기 처리하는 것은 상관이 없고, 순차적으로 하나씩 처리하는 것이 직렬 처리인 것이다. ex) a, b, c, d 4개의 작업이 있다. a작업은 동기 b작업은 비동기 c작업은 동기 d작업은 동기 여기서 작업.. 2022. 9. 22.
프로세스와 쓰레드, 동기와 비동기 동기와 비동기 개념을 알기 전에 먼저 스레드와 프로세스가 무엇인지 파악하는 것이 좋다. 1. 프로세스(Process) -프로세스란 "운영체제(OS)로부터 시스템 자원을 할당받는 작업의 단위" 이다. -프로세스는 프로그램과 비슷한 개념으로 오해하기도 하는데 구분해보면 다르다. 프로그램이란 "어떤 문제를 해결하기 위해서 그 처리방법과 순서를 기술하여 컴퓨터에 주어지는 일련의 명령문 집합체" 이다. -프로세스는 프로그램이 운영체제로부터 메모리 공간을 할당받아 실행 중인 것으로 "메모리에 올라와 실행되고 있는 프로그램의 인스턴스" 라고 볼 수 있다. ex) 알람 어플 알람 어플을 사용할 때 5초 후에 울리는 알람을 맞춘다. 1. 알람 시간을 조정하는 동작 프로세스 2. 알람이 울리기까지 시간을 계산하는 프로세스.. 2022. 9. 21.
객체지향프로그래밍(OOP) 개발을 하다 보면 객체지향 프로그래밍이란 말을 정말 많이 들어본다. 객체지향 프로그래밍이란 무엇일까 1. 객체지향프로그래밍(oop) -컴퓨터 프로그래밍 패러다임의 하나이다. -프로그래밍에서 필요한 데이터를 추상화시켜서 객체들을 만들고, 그 객체들 간의 상호작용을 통해 구성되는 프로그래밍 방법. -여러 객체들의 모임으로 각 객체들은 메시지를 주고받거나, 데이터를 처리할 수 있다. -목적은 코드의 재사용성과 중복제거이다. -대표적인 구성요소로 class, object, method 등이 있다. 1) class -class는 청사진으로 어떤 집단의 속성과 행위를 정의해 놓은 것이다. (속성과 행위는 property와 method라고 할 수 있다.) -class는 어떤 틀이라고 할 수 있다. 쉽게 예를 들자면 .. 2022. 9. 20.
AppDelegate와 Scene Delegate에 관하여 -스토리보드 없이 코드만으로 UI를 구성하는데 선행학습으로 AppDelegate와 SceneDelegate에 관해 공부해봐야겠다는 생각이 들어 deep diving 해본다. -ios13 이전까지는 AppDelegate에서 Process Lifecycle과 UI Lifecycle과 같은 생명주기들을 관리했었다. 하지만 그림과 같이 ios13부터 Scene Delegate라는 것이 생기면서 AppDelegate에서 UI Lifecycle이 떨어져 나가 SceneDelegate에서 관리하게 되었고, AppDelegate는 Process Lifecycle(기존에 있던)과 Session Lifecycle(scene에 대한 정보를 관리할 수 있는)이 추가되었다. -Scene Delegate의 등장 배경 : ios1.. 2022. 9. 20.