[Swift] iOS UIKit & Cocoa Touch Framework

simoniful·2021년 10월 14일
0

Swift

목록 보기
2/9
post-thumbnail

App LifeCycle

  • Not Running : 앱이 시작되지 않았거나 실행되었지만 시스템에 의해 종료된 상태를 나타낸다.
  • Inactive : 앱이 전면에서 실행 중이지만, 아무런 이벤트를 받지 않고 있는 상태를 나타낸다.
  • Active: 앱이 전면에서 실행 중이며, 이벤트를 받고 있는 상태
  • Background : 앱이 백그라운드에 있지만 여전히 코드가 실행되고 있는 상태, 대부분의 앱은 Suspended 상태로 이행하는 도중에 일시적으로 진입하지만, 파일 다운로드나 업로드, 연산처리 등 여분의 실행 시간이 필요한 앱일 경우 특정 시간 동안 이 상태로 남아 있게 되는 경우도 있다.
  • Suspended : 앱이 메모리에 유지되지만 실행되는 코드가 없는 상태. 메모리가 부족한 상황이 오면 iOS 시스템은 foreground에 있는 앱의 여유 메모리 공간을 확보하기 위해 Suspended 상태에 있는 앱들을 특별한 알림 없이 정리한다.

앱의 실행 상태가 변화할 때마다 앱 객체는 AppDelegate에 정의된 특정 메소드를 호출합니다. 이를 통해서 앱이 백그라운드에 돌입하는 시점에 데이터를 저장하거나 앱이 액티브 될 때 뷰를 업데이트 하는 등 추가적인 메서드를 수행할 수 있습니다.

iOS 13에서 SceneDelegate가 도입되기 전, 위의 작업은 AppDelegate에서 수행되었지만 이제는 대부분의 메소드가 SceneDelegate로 이동했습니다.


Mac Catalyst

애플 개발 생태계에서 디바이스별로 별도의 개발을 지양하고 통합적인 개발을 할 수 있도록 해주는 프로젝트입니다. 예를 들면 iPad용도로 출시된 앱을 MacOS에서도 사용할 수 있게 환경 조성을 하며, M1칩의 Apple Device들이 나오고 SwiftUI가 이를 크로스 플랫폼(디바이스)로 지원하면서 보다 확장적인 형태로 자리잡을 예정입니다.

기본적인 구상은 UIKit 및 Foundation 코드를 이용하여 MacOS 에서 실행되는 앱을 컴파일 할 수 있는 생태계 구성을 목적으로 합니다. 현재는 SwiftUI를 주축으로 활성화되고 있습니다.

🔗 Catalyst와 SwiftUI
🔗 Mac Catalyst tutorial


Cocoa Touch Framework

코코아 터치 프레임워크는 애플 환경에서의 다양한 터치 기반의 애플리케이션을 제작하기 위한 여러 개발 도구를 포함하는 최상위 레벨의 프레임워크입니다. 대표적인 유저 인터페이스 도구인 UIKit, 웹, 지도 등 다양한 도구가 함께 제공됩니다.

  • Foundation : 애플리케이션의 핵심 객체와 네트워크, 문자열 처리등의 기능
  • UIKit : 앱 개발에 사용되는 유저 인터페이스를 제공하는 기능
  • GameKit : 게임 실행 시 게임센터를 연결하거나 근거리 통신을 제공하는 프레임 워크
  • MapKit : 위치 정보, 지도 관련서비스를 이용할 수 있는 프레임 워크
  • WebKit : 웹 관련 기능을 구현하기 위한 프레임 워크
  • UserNotification : 사용자 알림을 처리하기 위한 기능을 제공하는 프레임워크

Cocoa Framework와 Cocoa Touch Framework 둘은 완전히 동일하지는 않지만 많은 기능을 공유하고 있습니다.


UIViewController

앱에서 뷰 객체의 계층을 관리하는 객체로 각자가 하나의 화면(Scene)을 담당하며 콘텐츠를 표현하고 뷰의 로직을 관리합니다.

  • View Controller: 가장 기본이 되는 View Controller로 앱의 데이터와 표시될 외형을 연결해서 하나의 동적 화면을 만들어 내는 컨트롤러입니다. 해당 뷰 컨트롤러는 반드시 UIViewController 클래스를 상속받습니다.

  • Navigation Controller: 앱의 Scene 이동에 대해 관리와 처리를 담당하는 컨트롤러로 다른 뷰 컨트롤러를 호함하는 개념이기도 합니다. 대부분의 어플리케이션이 하나의 앱 안에서 시작을 하는 화면에서부터 이동해서 특정 기능을 사용하는 다른 화면으로 넘어가는데 네비게이션 컨트롤러의 기능을 이용한 것 입니다.

  • Tab bar Controller: 화면 하단에 여러 개의 탭이 있고 탭을 터치하면 화면이 전환되는 형태의 뷰 컨트롤러입니다.

  • Table View Controller: 연락처나 채팅앱의 대화목록 과 같이 한 줄에 하나씩 여러줄에 같은 목적의 데이터를 수직적으로 나열하는 것이 Table View Controller의 역할입니다. 테이블 뷰 컨트롤러는 내부에 테이블 뷰와 내부의 뷰 셀을 가지고 있으며, 셀을 반복해서 보여줍니다.

  • Collection View Controller: 수평적인 나열도 구현가능한 뷰 컨트롤러로 흔히 사진앱이나, 인스타그램과 같은 어플을 Collection View를 통해 구현할 수 있습니다. 유저 인터페이스가 굉장히 인터렉티브 하고 복잡해질 때 관리할 수 있는 고성능의 뷰 컨트롤러입니다.


UIView

UIView는 화면의 직사각형 영역에 대한 내용을 관리하는 객체로 UIView 클래스는 모든 View의 공통적인 기본 빌딩 블록입니다. UIButton, UILable 등과 같은 객체들은 모두 UIView를 상속 받은 자식 뷰입니다. UIView는 다른 UIView 하위 객체들을 subView에 포함할 수 있으며, 같은 UIView 조차도 포함할 수 있는 가장 기본적인 요소라고 할 수 있습니다.


@IBOutlet, @IBAction

InterfaceBuilder의 약어를 시작으로 해당 어노테이션들은 스토리보드 상의 씬에서의 객체를 연결하여 변수와 메서드로서 활용할 수 있도록 만든 연결 상태를 뜻합니다. 컴파일러는 이를 해석하여 해당 객체 요소에 대한 동작과 뷰를 컨트롤 가능하게 합니다.


Break Point

개발에서 디버깅이 익숙하지 않지만 결국엔 테스트부터 로직 확인까지 가장 기초적인 부분을 한 번 뜯어 볼 수 있어야 하기에 별도로 정리해서 올릴 예정입니다.

🔗 디버그와 브레이크 포인트
🔗 LLDB 정복
🔗 Xcode에서 디버깅 하는 법

profile
소신있게 정진합니다.

0개의 댓글