UIKit, APP Bundle

Groot·2022년 12월 22일
0

TIL

목록 보기
122/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 면접스터디

📍 iOS 앱을 만들고, User Interface를 구성하는 데 필수적인 프레임워크 이름은 무엇인가?

  • UIKit
    • UI 구현을 위한 window 및 view architecture
    • Multi-Touch 및 기타 유형의 사용자 입력을 앱에 전달하기 위한 이벤트 처리 인프라를 제공
    • 사용자, 시스템 및 앱 간의 상호 작용을 관리하기 위한 기본 실행 루프를 제공

📍 Cocoa 프레임워크 계층

  • Cocoa Touch 계층

    • 하위 계층의 프레임워크를 사용하여 애플리케이션을 직접 구현하는 프레임워크.
    • UIKit, GameKit, MapKit
  • Media 계층

    • 상위 계층인 코코아 터치 계층에 그래픽 관련 서비스나 멀티미디어 관련 서비스를 제공
    • Core Graphics, Core Text, Core Audio, Core Animation, AVFoundation
  • Core Service 계층

    • 문자열 처리, 데이터 집합 관리, 네트워크, 주소록 관리, 환경 설정 등 핵심적인 서비스들을 제공. 또한 GPS, 나침반, 가속도 센서나 자이로스코프 센서와 같이 디바이스의 하드웨어 특성에 기반한 서비스도 제공.
    • Foundation, Core Foundation, Core Location, Core Motion, Core Animation, Core Data
  • Core OS 계층

    • 커널, 파일 시스템, 네트워크, 보안, 전원 관리, 디바이스 드라이버 등이 포함
    • iOS가 운영 체제로서 기능을 하기 위한 핵심적인 영역

📍 Foundation Kit은 무엇이고 포함되어 있는 클래스들은 어떤 것이 있는지 설명하시오.

  • Foundation 프레임워크는 데이터 저장 및 관리, 텍스트 처리, 날짜 및 시간 계산, 정렬 및 필터링, 네트워킹을 포함하여 앱 및 프레임워크를 위한 기본 기능 레이어를 제공하는 Swift의 기본 프레임워크
    • Cocoa 전체에서 사용되는 기본 유형 포함.
    • 앱 구성에 도움을 주는 Task 관리, 리소스, 에러와 예외처리 같은 라이브러리를 포함.
    • 내부 저장소, iCloud 같은 데이터 관리 라이브러리 포함.
    • 네트워킹 라이브러리 포함.
    • 기본적인 Objective-C, 내부 프로세스, 스레드 처리를 위한 동시성 라이브러리 포함.

📍 UIKit 클래스들을 다룰 때 꼭 처리해야하는 애플리케이션 쓰레드 이름은 무엇인가?

  • main thread
  • UIKit은 main thread를 통해 App의 런루프와 이벤트, UI처리 루프를 모두 처리한다.
    • main thread가 아닌 Backgroud thread에서 UI 이벤트를 비동기로 처리하게 되면 UI rendering이 thread 마다 일어나기 때문에 굉장한 부하를 줄 수 있다. (UI rendering는 부하가 큰 작업이다.)

📍 App Bundle의 구조와 역할에 대해 설명하시오.

  • App Bundle은 코드와 리소스를 캡슐화하는 데 사용되는 macOS 및 iOS의 기본 기술
  • 실행 가능한 프로세스와 관련된 코드 및 리소스를 하나의 파일에서 관리할 수 있다.
  • 일반적인 iOS 애플리케이션 번들은 애플리케이션 실행 파일과 애플리케이션이 사용하는 모든 리소스(예: 애플리케이션 아이콘, 기타 이미지 및 현지화된 콘텐츠)를 최상위 번들 디렉토리에 포함
    • 애플리케이션 코드가 포함된 실행 파일
    • Application icons
    • Info.plist
      • 번들 ID, 버전 번호 및 표시 이름과 같은 애플리케이션에 대한 구성 정보
    • Launch images
    • MainWindow.nib
      • 애플리케이션 시작 시 로드할 기본 인터페이스 객체
    • Settings.bundle
      • 기본 설정을 구성하고 표시하기 위한 속성 목록 및 기타 리소스 파일
    • Custom resource files
      • nib 파일, 이미지, 사운드 파일, 구성 파일, 문자열 파일 및 애플리케이션에 필요한 기타 사용자 정의 데이터 파일

🔗 번들의 장점

  • 번들은 파일 시스템의 디렉토리 계층이기 때문에 번들은 파일만 포함, 동일한 파일 기반 인터페이스를 모두 사용하여 다른 유형의 파일을 열 때와 마찬가지로 번들 리소스를 열 수 있다.
  • 번들 디렉토리 구조를 통해 localizations를 쉽게 지원할 수 있다. localization된 리소스 관리가 쉽다
  • 번들은 HFS, HFS+ 및 AFP와 같은 여러 포크 형식과 UFS, SMB 및 NFS와 같은 단일 포크 형식을 포함하여 다양한 형식의 볼륨에 상주할 수 있다.
  • 사용자는 Finder에서 간단히 번들을 드래그하여 설치, 재배치 및 제거할 수 있다.
  • 패키지이기도 하므로 불투명한 파일로 취급되는 번들은 중요한 리소스의 제거, 수정 또는 이름 변경과 같은 우발적인 사용자 수정에 덜 취약.
  • 여러 칩 아키텍처(PowerPC, Intel) 및 다양한 주소 공간 요구 사항(32비트/64비트)을 지원할 수 있습니다. 또한 특수 실행 파일(예: 특정 벡터 명령어 세트에 최적화된 라이브러리)의 포함을 지원할 수 있습니다.
  • 대부분의(전부는 아님) 실행 가능한 코드를 번들로 묶을 수 있다. 애플리케이션, 프레임워크(공유 라이브러리) 및 플러그인은 모두 번들 모델을 지원.
    • 정적 라이브러리, 동적 라이브러리, 셸 스크립트 및 UNIX 명령줄 도구는 번들 구조를 사용하지 않는다.
  • 번들 애플리케이션은 서버에서 직접 실행할 수 있다. 로컬 시스템에 특별한 공유 라이브러리, 확장 및 리소스를 설치할 필요가 없다.

https://developer.apple.com/documentation/foundation?language=objc
https://developer.apple.com/documentation/uikit?language=objc
https://velog.io/@wan088/iOS-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-CocoaTouch-Foundation-UIkit-sjjzdqmte4
https://developer.apple.com/app-store/app-bundles/
https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

profile
I Am Groot

0개의 댓글