BOID
[iOS] 코코아 터치 프레임워크란? 본문
안녕하세요 HoonIOS입니다 :)
오늘은 기본부터 다시 공부하고 있는데 iOS에서 제일 중요한 기본 중의 기본! 프레임워크에 대해 포스팅을 하려고 합니다.
우선 프레임워크의 의미를 알아야 겠죠?
프레임워크란?
- 프레임워크의 사전적인 의미는 어떤 것을 이루는 뼈대, 기본 구조를 이야기합니다, 비유를 하자면 건축을 할 때 뼈대, 형태를 의미합니다.
- 이것을 iOS의 소프트웨어에서 사용하는 프레임워크는 애플리케이션 제작을 빠르고 편리하게 할 수 있도록 뼈대를 이루는 각종 코드를 제작하여 미리 모아둔거라고 생각하시면 됩니다.
- 이렇게 설명하면 어려울 수 있으니 iOS에서 사용하는 대표적인 클래스를 보고 말씀드릴게요, 우선 UIButton, UILabel, UIViewController ... 등이 있는데요 이 UI로 시작하는 클래스는 UIKit 프레임워크에서 제공하는 클래스입니다.
클래스 | 역활 |
UIButton | 버튼을 표현하는 역할로 탭 했을때 응답, 버튼 모양을 구성하는데 사용되는 메서드를 제공합니다. |
UILabel | 텍스트를 표시하는 역할로 텍스트 모양, 크기, 그림자 등 text를 꾸미는 메서드를 제공합니다. |
UIViewController | 모든 뷰 컨트롤러의 역할로 관리하는 뷰와 밀접하게 연결되어 있어 뷰 계층 구조에서 이벤트를 처리하는 역할을 합니다. |
- 특정 프레임워크를 반입하기 위해서는 import키워드를 사용해야 한다. 예시로 import UIKit이라는 코드를 맨 위에 작성해 주어야 하고 만약 프레임워크를 반입 하지 않고 해당하는 클래스를 사용하면 아래와 같은 오류가 발생합니다.
- 여기서는 예제로 UIKit을 예시로 설명을 했지만 실제로 앱을 만들때는 UIKit뿐만 아니라 필요한 기능 처리를 위해서 적절한 프레임 워크를 import 시켜주어야 합니다.
그럼 이제 애플 환경에서 사용하는 프레임워크인 코코아 터치 프레임워크에 대해서 알아보겠습니다.
코코아 터치 프레임워크란?
- 코코아 터치 프레임워크는 애플 환경에서 터치 기반의 애플리케이션을 제작하기 위한 도구들의 모음이라고 합니다.
- 코코아 터치 프레임워크의 가장 대표적인 것이 바로 유저 인터페이스라는 것인데, 많은 앱들이 서로 다른 내용과 기능이 있지만 화면 구성에서는 거의 다 유사한데 이 이유는 바로 모두 동일한 유저 인터페이스 도구를 이용해서 화면을 구현했기 때문입니다.
- 코코아 터치 프레임워크의 도구들은 용도에 따라 여러 개의 하위 프레임워크로 나누어져 있다.
그럼 이제 코코아 터치 프레임워크를 이루는 주요 프레임 워크에 대해 알아보겠습니다
- Foundation Framework
- 애플리케이션의 핵심 객체와 네트워크, 문자열 처리 등의 서비스를 제공하는 프레임워크입니다 - UIKit Framework
- 이거는 위에서도 말씀을 드렸는데 애플리케이션의 유저 인터페이스를 제공하는 프레임워크입니다.
(ex. UIButton, UILabel ...) - GameKit Framework
- 게임을 실행할때 게임 센터를 연동하거나 근거리 연결을 제공해주는 프레임워크입니다. - MapKit Framework
- 위치 정보나 지도 관련 서비스를 이용할 수 있도록 해 주는 프레임워크 - ContactsUI Framework
- 번들 애플리케이션으로 제공되는 주소록 앱의 인터페이스와 기능을 커스텀 앱 내에서도 그대로 사용할 수 있도록 해주는 프레임 워크 - EventKit UI Framework
- 이벤트 처리에 필요한 유저 인터페이스를 제공하는 프레임 워크이다, 좀 더 자세히 설명하면 달력 및 미리 알림 정보를 모달로 사용자에게 표시한다. - Message UI Framework
- 번들 애플리케이션으로 제공되는 메시지 앱의 인터페이스와 기능을 커스텀 앱 내에서도 그대로 사용할 수 있도록 제공하는 프레임 워크
- 사용자가 앱을 떠나지 않고도 이러한 인터페이스를 사용하여 메시지 전달 기능을 추가할 수 있습니다.
- 단, 메시지를 보낼 수 없는 경우 해당 뷰 컨트롤러에 표시하지 않아야 한다. - UserNotifications Framework
- 중요한 프레임워크이다. 사용자 알림을 처리하기 위해 필요한 객체를 제공하는 프레임워크이다.
- 중요하다고 한 이유가 현재 사용하고 있는 앱들 중에 알림 메시지를 안 보내는 앱이 있나요? 적어도 광고 알림, 특정 세일 알림, 시간 알림 같이 알림 기능은 필수적으로 사용되기 때문에 이 프레임워크는 중요합니다. - Webkit Framework
- 웹 관련 기능을 구현하기 위해 필요한 객체들을 제공하는 프레임워크입니다.
- 여기서 구현할 때 중요한 부분이다. 항상 WebKit 함수와 메서드는 너의 메인 스레드이나, 메인 dispatch queue에서 실행시켜야 한다. 이 내용은 추후 WebKit Framework를 설명할 때 자세히 다뤄 보도록 하겠습니다.
- 위에 주요 프레임워크를 알아봤는데요 여기서 제일 중요한 양대 산맥이라고 불리는 프레임워크는 Foundation Framework, UIKit Framework이 있습니다.
그 이유는 이 두 프레임워크는 자체만으로도 굉장히 방대한 내용을 담고 있을 뿐만 아니라, 앱을 개발할 때 반드시 필요한 도구들이라 상용되는 앱 중에서 이들을 사용하지 않은 앱들은 거의 없을 것입니다.
- 따라서 위 코코아 터치 프레임워크는 주 프레임워크로 간주합니다.
- 다시 한번 주 프레임워크에 대해 정리하자면 파운데이션 프레임워크는 기본 데이터 형식, 컬랙션 및 앱의 기본 객체와 기반 기술을 제공하는 역할을 하고 UIKit 프레임워크는 유저 인터페이스를 통해 iOS 앱을 구현할 수 있는 방법을 제공합니다.
- 쉽게 말해 iOS 앱으로서의 특정인 부분은 UIKit, 내부적으로 돌아가는 기능은 파운데이션 프레임워크가 처리한다고 보면 된다.
지금 이 글을 읽으시면서 코코아 터치 프레임워크랑 코코아 프레임워크에 대해서 오타인가? 같은 뜻인가? 같이 의문점을 가지 실수 있으실 텐데요? 이제 이 둘에 대해 알아보겠습니다.
코코아 터치 프레임워크와 코코아 프레임워크
- 우선 정답부터 말하자면 코코아 터치 프레임워크는 코코아 프레임워크를 바탕으로 만들어졌다.
- 코코아 프레임워크는 데스크톱 운영 체체에서 실행되는 애플리케이션을 개발하기 위해 사용되던 프레임워크입니다.
- 지금 사파리 화면으로 보시면 왼쪽 위에 닫기 버튼이 있는 3개의 제어 버튼이 표시되는 것을 보실 수 있는데요 이것은 코코아 프레임워크에서 제공하는 NSWindow라는 객체를 사용하여 윈도우를 생성하면 자동으로 추가되는 기능입니다 (그냥 TMI로 들으시면 됩니다 ㅎㅎ)
-코코아 터치 프레임워크와 코코아 프레임워크는 많은 부분을 공유한다, 따라서 완전히 서로 별개의 프레임워크는 아닙니다.
- 코코아 프레임워크에서 양대 산맥으로 불리는 두가지 핵심 프레임워크는 파운데이션 프레임워크와 애플리케이션 킷 프레임워크로 애플리케이션 킷 프레임워크는 데스크톱용 유저 인터페이스를 담당하는 역할로 앱킷(AppKit) 프레임워크로 불린다.
- 여기서 말한 앱킷 프레임워크는 iOS에서 UIKit 프레임워크로 대체 되었다, 그이유는 터치환경에 적합한 유저인터페이스로 구현한 프레임워크 이기 때문입니다.
- 코코아와 코코아 터치 프레임워크가 사용되고 있는 운영 체제 및 디바이스를 살펴보면 macOS는 코코아 프레임 워크를 사용하고 iOS, watchOS, tvOS는 코코아 터치 프레임워크를 사용하고 있으니 iOS뿐만 아니라 다른 운영체제를 개발할실때 참고하시길 바랍니다 :)
지금까지 프레임워크에 대해 알아보았는데요, 정리하고 보니 길어졌네요...
다음 포스팅은 프레임워크의 계층 관계에 대해 알아보겠습니다. 긴 글 읽어주셔서 감사합니다 :)
'IOS 시작기' 카테고리의 다른 글
[iOS] 뷰 컨트롤러의 상태 변화와 생명주기 (0) | 2021.03.19 |
---|---|
[iOS] 뷰컨트롤러란? (0) | 2021.03.18 |
[iOS] 인터페이스의 표현 구조(윈도우, 뷰, 뷰컨트롤러에 대해) (0) | 2021.03.18 |
[iOS] 프레임워크 계층 관계 (0) | 2021.03.17 |
안녕하세요:) 개린이의 IOS 시작기입니다 (0) | 2021.02.01 |