이 포스트는 iOS 개발 면접을 위한 문답을 정리한 포스트 입니다.



참고 자료



bound와 frame의 차이점

  • bound와 frame 모두 해당 주체의 너비, 높이와 위치 좌표 값(x,y)를 나타낸다.

    • frame은 부모 뷰의 좌표시스템에서 자신의 위치를 나타낸다.

      • frame의 x,y 좌표를 변경하게 되면 자기 자신의 위치가 변경된다.
    • bound는 자신의 내부 좌표 시스템을 사용하여 위치를 나타낸다.

      • bound의 x,y 좌표를 변경하면 자신이 포함하는 하위 뷰들의 위치가 옮겨지게 된다.

Cocoa Touch Framework?

CocoaTouchFrameworkImg-1

  • 코코아 터치 프레임워크는 iOS 애플리케이션 개발 환경이다.

    • 코코아 터치 프레임워크는 애플리케이션의 다양한 기능 구현에 필요한 여러 프레임워크를 포함하는 최상위 레벨의 프레임워크이다.

      • 코코아라는 단어는 Objective-C 런타임을 기반으로하고, NSObject를 상속받는 모든 클래스 또는 객체를 가리킬 때 사용한다.

      • 코코아 또는 코코아 터치는 iOS 또는 macOS의 전반적인 기능을 활용해 애플리케이션을 제작할 때 사용하는 프레임워크이다.

      • 코코아 터치는 핵심 프레임워크인 UIKit과 Foundation을 포함한다.

  • 참고로 코코아 프레임워크는 macOS 애플리케이션 제작에 사용하는 프레임워크이다.

    • 즉, 코코아 터치 프레임워크와는 다른것.

Foundation Kit은 무엇이고 어떤 클래스들이 포함되어있는지.

FoundationDocsImg-1

  • Foundation Kit은 Cocoa Touch framework에 포함되어 있는 프레임워크 중 하나이다.

    • Foundation은 원시 데이터 타입(String, Int, Double)과 컬렉션 타입(Array, Dictionary, Set) 및 운영체제 서비스를 사용해 앱의 기본적인 기능을 관리하는 프레임워크이다.

    • Foundation 프레임워크는 데이터 저장 및 지속성, 텍스트 처리, 날짜 및 시간 계산, 정렬 및 필터링 그리고 네트워킹을 포함하여 앱 및 프레임워크에 대한 기본 계층 기능을 제공한다. Foundation에서 정의한 클래스, 프로토콜 및 데이터 유형은 macOS, iOS, watchOS 및 tvOS SDK에서 사용된다.

  • Foundation에서 제공하는 데이터 타입 및 컬렉션 타입의 대부분은 Objective-C 언어의 기능에서 지원하지 않는 것이기 때문에 언어기능을 보완하기 위한 구현이며, Swift에서는 이에 해당하는 데이터 타입과 기능 대부분을 Swift 표준 라이브러리에서 제공한다.

  • Foundation의 기능별 요소

    • 기본

      • Number, Data, String : 원시 데이터 타입 사용.

      • Collection : Array, Dictionary, Set 등과 같은 컬렉션 타입 사용.

      • Date and Time : 날짜와 시간을 계산하거나 비교하는 작업.

      • Unit and Measurement : 물리적 차원을 숫자로 표현 및 관련 단위 간 변환 기능.

      • Data Formatting : 숫자, 날짜, 측정값 등을 문자열로 변환 또는 반대 작업.

      • Filter and Sorting : 컬렉션의 요소를 검사하거나 정렬하는 작업.

    • 애플리케이션 지원

      • Resources : 애플리케이션의 에셋과 번들 데이터에 접근 지원.

      • Notification : 정보를 퍼뜨리거나 받아들이는 기능 지원.

      • App Extension : 확장 애플리케이션과의 상호작용 지원.

      • Error and Exceptions : API와의 상호작용에서 발생할 수 있는 문제 상황에 대처할 수 있는 기능 지원.

    • 파일 및 데이터 관리

      • File System : 파일 또는 폴더를 생성하고 읽고 쓰는 기능 관리.

      • Archives and Serialization : 속성 목록, JSON, 바이너리 파일들을 객체로 변환 또는 반대 작업 관리.

      • iCloud : 사용자의 iCloud 계정을 이용해 데이터를 동기화하는 작업 관리.

    • 네트워킹

      • URL Loading System : 표준 인터넷 프로토콜을 통해 URL과 상호작용하고 서버와 통신하는 작업.

      • Bonjour : 로컬 네트워크를 위한 작업.

    • 클래스

      • class ListFormatter

      • class NSOrderedColletionChange

      • class NSOrederedCollectionDifference

      • class RelativeDateTimeFormatter

      • class NSSecureUnarchiveFromDataTransformer

      • class NSXPCCoder

      • class UnitInformationStorage

iOS 앱을 만들고 User Interface를 구성하는데 필수적인 프레임워크는?

  • UIKit 이다.

UIKitDocsImg-1

  • UIKit 소개

    • UIKit은 iOS 애플리케이션의 사용자 인터페이스를 구현하고 이벤트를 관리하는 프레임워크이다.

      • UIKit 프레임워크는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함한다.

      • 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션의 화면을 구성하는 요소를 포함한다.

      • UIKit 클래스 중 UIResponder에서 파생된 클래스나 사용자 인터페이스에 관련된 클래스는 애플리케이션의 메인 스레드(혹은 메인 디스패치 큐)에서만 사용 해야한다.

      • UIKit은 iOS와 tvOS 플랫폼에서 사용한다.

  • UIKit 기능별 요소

    • 사용자 인터페이스

      • View and Control : 화면에 콘텐츠 표시

      • View Controller : 사용자 인터페이스 관리

      • Animation and Haptics : 애니매이션과 햅틱을 통한 피드백 제공

      • Window and Screen ; 뷰 계층을 위한 윈도우 제공

    • 사용자 액션

      • Touch, Press, Gesture : 제스처 인식기를 통한 이벤트 처리 로직

      • Drag and Drop : 화면 위에서 드래그 앤 드롭 기능

      • Peek and Pop : 3D 터치에 대응한 미리 보기 기능

      • Keyboard and Menu : 키보드 입력을 처리 및 사용자 정의 메뉴 표시