[iOS] Foundation, UIKit, Cocoa Touch

승아·2021년 4월 12일
0

부스트 코스-iOS앱 프로그래밍

✅⠀CocoaTouch란?

코코아 터치 계층(Cocoa Touch Layer)

  • iOS 애플리케이션 개발에 주 축을 이루는 개발환경
  • 애플리케이션의 다양한 기능 구현에 필요한 여러 프레임워크를 포함하는 최상위 프레임워크 계층
  • 참고로 코코아 계층은 macOS 애플리케이션 제작에 사용됨
  • '코코아'라는 단어는 Objective-C 런타임을 기반으로하고, NSObject를 상속받는 모든 클래스 또는 객체를 가리킬 때 사용
  • '코코아 터치' 또는 '코코아'는 iOS 또는 macOS의 전반적인 기능을 활용해 애플리케이션을 제작할 때 사용하는 프레임워크 계층
  • '코코아 터치'는 핵심 프레임워크인 UIKit과 Foundation을 포함한다.

✅⠀UIKit이란?

UIKit 프레임워크

  • iOS 애플리케이션 개발시 사용자에게 보여질 화면을 구성하고 사용자 액션에 대응에 관련된 다양한 요소를 포함
  • iOS 애플리케이션의 사용자 인터페이스를 구현하고 이벤트를 관리하는 프레임워크입니다.
  • 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함
  • 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션의 화면을 구성하는 요소를 포함
  • 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: 키보드 입력을 처리 및 사용자 정의 메뉴 표시

💡 새롭게 ViewController를 생성하면 상단에 'import UIKit'이 기본적으로 명시되어있는걸 본적 있나요? 왜 ViewController와 UIKit는 단짝일까요?
ViewController는 UIViewController를 상속받음. UIViewController는 UIKit 프레임워크에 정의 된 클래스. import 구문이 없으면 컴파일러는 UIViewController가 누군지 알 수 없음. import를 해줌으로써 컴파일러가 UIViewController클래스를 찾아 빌드를 할 수 있다.

✅⠀Foundation이란?

Foundation 프레임워크

  • iOS 애플리케이션의 운영체제 서비스와 기본 기능을 포함하는 프레임워크
  • Foundation은 원시 데이터 타입(String, Int, Double), 컬렉션 타입(Array, Dictionary, Set) 및 운영체제 서비스를 사용해 애플리케이션의 기본적인 기능을 관리하는 프레임워크
    - Foundation 프레임워크는 데이터 타입, 날짜 및 시간 계산, 필터 및 정렬, 네트워킹 등의 기본 기능을 제공합니다.
    - Foundation 프레임워크에서 정의한 클래스, 프로토콜 및 데이터 타입은 iOS뿐만 아니라 macOS, 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: 로컬 네트워크를 위한 작업

💡 새롭게 ViewController 파일을 생성하면 상단에 'import UIKit'이 기본적으로 명시되어있죠.
그렇다면 어떤 파일을 생성하면 'import Foundation'이 기본적으로 명시되어있을까요?

Swift File을 생성할 때 Foundation이 자동으로 import 된다.
UIKit 정의를 확인하면 UIKit 프레임워크에서 이미 Foundation 프레임워크를 import 했기 때문에 따로 import 하지 않아도 UIKit에 의해서 추가됩니다.

0개의 댓글