[iOS] 기본 개념 몇 가지 정리

한상진·2021년 4월 10일
2

iOS

목록 보기
1/9






📕iOS 계층구조

iOS는 Unix 기반의 맥 OS X를 기반으로 해서 다윈 커널을 가지고 있는 모바일 OS이다.
iOS는 아래층 부터 Core OS / Core Service / Media / COcoa Touch / Application 으로 이루어져 있으며, 아래로 갈 수록 가장 기본이 되는 층이고, 위로 갈 수록 사용자와 관련이 있는 층이다.

하위 계층은 iOS의 핵심 부분 또는 하드웨어에 가깝다.

Application

🎈iOS의 가장 바깥 계층으로, Apple App, Third-Party App이 여기에 속한다.
🎈사용자와 가장 맞닿아 있는 계층이다.

Cocoa Touch

🎈화면의 그래픽 UI 및 터치의 기능을 제공한다.
🎈UIKit, MapKit, MessageUI등이 여기에 속한다.
🎈실제로 개발할 때 가장 많이 접하게 되는 계층이다.

Media

🎈그래픽이나 오디오, 비디오 등 멀티미디어 기능을 제공하는 계층이다.
🎈C와 Objective-C가 혼합되어 있는 형태이다.
🎈AvFoundation(미디어 재생관련), MediaPlayer(플레이어), Core Image(이미지 가공)등의 기능이 있다.

Core Service

🎈GPS 나침반, 가속도 센서, 자이로스코프 디바이스 등 하드웨어적 기능들이 속한다.
🎈Core OS에서 제공하지 않는 기능들을 포함한다.
🎈내부 데이터/위치/센서 등의 기능을 제공한다.
🎈CoreMotion(기기 센서), Accounts(계정 관리), Core Foundation(데이터 관리)등의 기능을 제공한다.

Core OS

🎈하드웨어와 가장 가까이 있는 최하위 계층이다.
🎈시스템의 핵심 기능을 포함하는 기본적인 부분들을 관리한다.


📕라이브러리와 프레임워크

라이브러리

라이브러리는 쉽게 말해, "자주 사용될 기능들을 모아 놓은 유틸(클래스)들의 모음집"으로 생각할 수 있다.
개발자와 실제 구현하고자 하는 기능 사이에, 개발자에게 기능을 쉽게 제공해주는 중간 계층이라는 의미에서 프레임워크와 맥락은 비슷하다.

프레임워크

프레임워크에는 해당 프레임워크의 제작자가 만들어놓은 '기반 코드'같은 개념이 존재한다.
사용자들은 해당 프레임워크를 사용해 본인이 원하는 기능들을 구현하게 될 것이다.
이러한 '기반 코드'에는 설계자가 설계한 구조를 유지하면서, 확장할 수 있도록 '의도된 제약 사항'이 존재한다.
즉, 설계의 기반이 되는 부분이 기술되어있는 확장 가능한 '기반 코드'와 개발자가 이 코드를 자신의 입맛대로 확장하는데 필요한 라이브러리가 합쳐진 개념이라고 볼 수 있다.
"기본적 설계 + 라이브러리는 줄테니까 너는 개발에만 집중해!"라면서 건네준게 프레임워크라는 개념이다.

라이브러리와 프레임워크의 차이점

프레임워크를 가지고 프로그램을 만들기 시작하면 '의도된 제약 사항'을 꼭 지키면서 만들어야한다.
하지만 라이브러리는 모음집, 즉 언제 어떻게 사용해도 되는 도구와 같은 개념이다.
프레임워크가 가지고 있는 제약 사항을 지키면서, 나머지 부분은 자유롭게 어떠한 도구(라이브러리)를 써도 무방하다는 것이다.


📕생명 주기(Life Cycle)

생명 주기란 '수명'과 같은 개념으로, 태어나서부터 죽기까지의 주기를 뜻한다.
App에서는 주로 View가 보여지는 순간부터 사라지는 순간까지의 주기를 의미한다.

나타나는 중 → 나타남 → 사라지는 중 → 사라짐

View는 이러한 주기를 거치게 되는데, ViewController는 View에 대한 Life Cycle을 감지할 수 있다.

위의 그림처럼, 변화가 있을 때 해당 메서드가 호출이 되는 형태이다.

viewWillAppear

🎈뷰가 계층에 추가되고 화면이 표시되기 직전에 호출되는 메서드이다.
🎈화면이 나타날 때 마다 수행해야 하는 작업을 하기 좋은 시점이다.

viewDidAppear

🎈뷰가 계층에 추가되어 화면이 표시되면 호출되는 메서드이다.
🎈뷰를 나타내는 것과 관련된 추가적인 작업을 하기 좋은 시점이다.

viewWillDisappear

🎈뷰가 계층에서 사라지기 직전에 호출되는 메서드이다.
🎈뷰가 생성된 뒤 발생한 변화를 이전 상태로 되돌리기 좋은 시점이다.

viewDidDisappear

🎈뷰가 계층에서 사라진 후 호출되는 메서드이다.
🎈시간이 오래 걸리는 작업은 권장되지 않는다.

🎈메모리에 뷰가 있다면 viewDidDisappear 이후 viewWillAppear부터 호출이 된다.
🎈메모리에 뷰가 없다면 뷰가 끝난 후 다시 loadView부터 시작하게 된다.

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    

메모리에 호출 된 직후 사용하고 싶은 명령 및 코드가 있다면, 주석(// Do any ~~) 처리된 위치에 작성하면 된다.

profile
공부방

0개의 댓글