App Bundle의 구조와 역할 Bundle 번들은 크게 App Bundle, FrameWork Bundle, Loadable Bundle 세가지로 나눌 수 있다. 1. App Bundle 실행될수 있는 executable과 executable을 설명하는 Info.plist 파일 그리고 executable에서 사용되는 launch 이미지를 포함한 asset과 자원, 인터페이스 파일, string파일, 데이터 파일로 이루어져 있다. 2. FrameWork Bundle dynamic shared library 라 불리는 동적 공유 라이브러리에서 사용되는 코드와 자원을 포함하고 있다. 3. Loadable Bundle 앱의 기능성을 확장시켜주는 실행 가능한 코드와 자원을 포함하고 있고 플러그인이 대표적인 예..
ARC, RC, 강한 순환 참조에 대해서 설명하시오. 🔑 핵심 내용: ARC는 컴파일 타임에 retain, release 코드를 삽입 하여 메모리를 관리한다. ARC ARC(Automatic Reference Counting)란 앱의 메모리 사용량을 추적하고 관리하는 도구로써 참조 타입 인스턴스가 더이상 필요하지 않을때 인스턴스에 할당된 메모리를 자동으로 해제 하여 메모리를 관리 합니다. 예전 Obj-C 에서는 retain, release 키워드를 작성하여 참조타입의 RC증가 및 감소 하도록 관리 하였는데, ARC는 retain, release 키워드를 컴파일타임에 자동으로 삽입하도록 하여 개발자가 메모리 관리 이슈를 줄이고 코딩 자체에 집줄 할 수 있도록 도와주는 역할을 하게 되었습니다. RC refe..
Reactive programming란 🔑 핵심 키워드: 비동기적 데이터 흐름과 변화의 전파에 중점을둔 프로그래밍 반응형 앱을 만들기 위한 비동기적 데이터 흐름과 변화의 전파에 중점을둔 프로그래밍 페러다임입니다. Reactive programming을 위해서 Swift는 Combine이라는 framework를 제공하고 있으며, Third party framework로 Rx등이 있습니다. 꼬리질문 비동기 프로그래밍이란 무엇인가요? 🔑 핵심 키워드: 여러 작업을 동시에 작업하는 것, Rx또는 Combine등 프레임워크는 비동기 작업의 콜백처리를 쉽게 할 수 있게 해준다. 비동기 프로그래밍이랑 여러 작업을 동시에 작업하는 것입니다. 동시에 작업을 처리할 수 있도록 쓰레드를 나눠 작업합니다. Swift는 비동기..
Generic 에 대해 설명하시오 타입 혹은 함수를 정의할때 추상적인 타입을 표기하여 중복코드를 방지하고 재사용 가능한 유연한 타입과 함수를 만들수 있게 하는 것입니다. where 절이나 protocol 명시로 추상 타입에 제약을 줄 수 있습니다. 제약을 준수하지 않으면 copmile error 가 발생합니다. 꼬리질문 제네릭의 타입 파라미터는 언제 실제 타입으로 변환되나요? 타입 파라미터는 사용할때 실제 존재하는 타입으로 치환 되며 이과정을 구체화(specialization) 라고합니다. 함수의 경우 실제 호출되었을때 타입 파라미터가 존재하는 타입으로 치환되며 타입의 경우 초기화 되어 메모리에 올라갈때 치환된다. 성능에 이점이 있나요? Struct와 Protocol을 사용해 다형성을 구현하게되면 cla..
@main 이란? @main 은 Swift 5.3 버전 부터 사용하는 키워드다. Swift5.3 이전 버전에서는 @UIApplicationMain 키워드를 사용했다. 공식 문서에 따르면 @main은 타입 기반의 프로그램 진입점 이라 설명한다. 프로그램 실행을 시작하기 위한 진입점으로 타입을 지정하는 Swift 언어 기능이라 한다. 보통 AppDelegate Class 에서 볼수있는데 AppDelegate는 앱이 시작되는 진입점을 알려주고, 앱의 입력 이벤트를 전달하는 런루프를 생성하는 역할을 한다. 공식문서의 소개를 보면 탑레벨의 코드를 작성하는 대신 사용자는 싱글 타입에 @main 속성을 사용할 수 있다고 설명한다. Top-Level Code란? Top-Level Code 에는 선언문(Top-Level..