도서 '꼼꼼한 재은 씨의 스위프트: 기본편'을 공부하면서 정리한 내용입니다.
전체 목록은 여기에서 볼 수 있습니다.

  • UIApplication, UIViewController, UILavel, UIButton ...
  • 위의 클래스는 스위프트 자체에서 제공하는 것이 아닌 UIKit 프레임워크에 속해 있는것이다.
  • 따라서 이러한 클래스를 사용하기 위해서 소스 코드의 상단에 해당 프레임워크를 반입하는 코드를 작성해주어야 한다.
    import UIKit

💡 프레임워크란?


소프트웨어에서 사용하는 프레임워크는 애플리케이션 제작을 빠르고 편리하게 할 수 있도록 미리 뼈대를 이루는 각종 코드를 제작하여 모아둔 것이다. 이러한 프레임워크를 모으면 다시 하나의 거대한 프레임워크가 되는데 '코코아 터치 프레임워크'가 바로 그것이다.

📱 iOS


애플이 개발해서 제공하는 임베디드 운영 체제이다.

  • SDK : 기기에 표현될 네이티브 앱을 개발하고 설치하여 실행하고 테스트하는 데 필요한 도구와 화면을 모두 포함
  • 네이티브 앱 : iOS 시스템 프레임워크를 기반으로 하고 swift 또는 Objective-c 언어로 개발되며 iOS를 통해 직접 실행되는 앱

iOS는 하드웨어(아이폰)와 앱 사이에서 중계자처럼 동작한다. 따라서 다른 기기라도 운영체제가 iOS라면 하나의 코드로 쓰여진 애플리케이션 작동이 가능한 것이다.

💻 코코아 터치 프레임워크


코코아 터치 프레임워크는 애플 환경에서 터치 기반의 애플리케이션을 제작하기 위한 도구들의 모음이다. 주요 프레임워크에는 다음과 같은 것들이 있다.

  • ⭐️ Foundation Framework : 앱의 핵심 객체와 네트워크, 문자열 처리 등의 서비스 제공
  • ⭐️ UIKit Framework : 유저 인터페이스 제공
  • GameKit Framework : 게임 실행 시 게임 센터를 연동하거나 근거리 P2P 연결을 제공
  • iAd Framework : 광고를 삽입할 수 있도록 해주는 프레임워크
  • MapKit Framework : 위치 정보나 지도 관련 서비스를 제공
  • Address Book UI Framework : 주소록 앱의 기능을 커스텀 앱 내에서도 사용할 수 있도록 해주는 프레임워크
  • EventKit UI Framework : 이벤트 처리에 필요한 유저 인터페이스를 제공
  • Message UI Framework : 메세지 앱의 기능을 커스텀 앱 내에서도 사용할 수 있도록 해주는 프레임워크
  • UserNotifications Framework : 사용자 알람을 처리하기 위해 필요한 객체들을 제공
  • WebKit Framework : 웹 관련 기능을 구현하기 위해 필요한 객체들을 제공

프레임워크의 계층 관계

코코아 터치 프레임워크를 구성하는 작은 단위의 프레임워크들은 계층 관계를 이룬다.

  • 상위 프레임워크 : 구체적, 사용자(앱) 친화적, 확장 가능성 낮음, 하위 계층에 의존적
  • 하위 프레임워크 : 추상적, 하드웨어 친화적, 확장 가능성 높음

코코아터치 프레임워크의 계층 구조 (내림차순)

  • Cocoa Touch 계층
    • 애플리케이션을 직접 지원하는 역할 담당.
    • UIKit, Game Kit, Map Kit 등
  • 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가 운영 체제로서 기능을 하기 위한 핵심적인 영역