[새싹 iOS] 1주차

임승섭·2023년 7월 21일
0

새싹 iOS

목록 보기
1/45

iOS 계층구조

1. Cocoa Touch Framework

  • 앱을 제작하기 위한 도구 모음 (화면 이벤트, UI 기능 포함)
  • 개발자의 역할
  • UIKit Framework
    : 유저 인터페이스 도구를 통해 iOS 앱을 구현할 수 있는 방법 제공
  • Foundation Framework
    : 기본 데이터 형식, 컬렉션, 앱의 기본 객체, 기반 기술 제공
    파일 및 데이터 관리, 네트워킹 시스템 포함

2. Media

  • 카메라, 영상, 음악 (아이폰의 발전)
  • 멀티미디어 서비스 제공. 음악, 비디오 찾고 재생할 때 사용

3. Core Service

  • 센서(중력가속도, 조도, 자이로스코프 등등), 나침반, GPS 등
    기기 자체의 움직임이나 하드웨어 특성에 기반한 서비스 제공

4. Core OS

  • C 기반 저수준 API, 하드웨어와 가까이 있는 최하위 계층
  • 배터리, 홈버튼 등 물리적인 것들

UIKit Framework

UIViewController

Content View Controller

  • 모든 뷰를 단독으로 관리한다
  • UIViewController, UITableController, UICollectionViewController

Container View Controller

  • 자체 뷰 + 자식 뷰 컨트롤러를 갖는 루트 뷰를 관리한다
  • UINavigationController, UITabbarController, UIPageViewController
  • UINavigationController
    • View Controller들을 계층구조로 탐색할 수 있게 해주는 컨트롤러
    • 수직적 형태의 계층 구조를 띈다
    • RootViewController가 존재해야 한다
    • 화면 전환 시 Push-Pop 구조
  • NavigationController나 TabbarController를 스토리보드 상에서 연결할 때,
    반드시 Relationship Segue에서 연결해주어야 한다

Other Controller

  • UIAlertController
  • UIImagePickerController (사진)
  • UIActivityViewController (에어드롭)
  • UIMenuController (복사 메뉴)
  • UIDocumentPickerViewController (파일 앱)
  • UIFontPickerViewController (서체 선택)
  • UIColorePickerViewController (색상)

UIView

  • View Controller 위에 뷰 객체가 쌓이는 형태
  • UILabel, UITextField, UITextView, UIImageView

Info

  • Appearance
    • Light라고 적는다 -> 다크모드를 사용하지 않는다
  • Privacy
    • 카메라, 사진 등에 대한 허용 여부 문구
  • Storyboard Name
    • 앱 빌드하고 처음에 나타나야 하는 화면의 스토리보드 파일명을 적어준다

Scene & Logic

  1. View Controller 추가
  1. Logic 파일 생성
    • 파일 생성 단축키 : command + n
    • 상속받을 슈퍼클래스 지정 : UIViewController, UITableViewController, ...
    • Group에는 폴더가 있어야 함
  1. 연결
    • Custom Class의 Class에 새로 만든 Logic 파일 치고 엔터
    • Inherit Module From Target 체크
  1. 뚝딱뚝딱
    • @IBOutlet
    • @IBAction
    • 연결 관련 에러가 발생할 때는 connection inspector 영역을 확인한다
      • 노란색 세모 표시(경고)를 지우고, 빈 동그라미(연결 x)를 스토리 보드 상에 알맞은 객체와 연결한다
      • 스토리보드랑 코드 연결하고 난 후에 변수 이름같은거 바꾸면 이런 에러 발생
    • 먼저 코드로 적고, 객체와 연결하는 것도 가능하다

앱의 생명주기

상태

  1. NOT Running
    • 앱이 시작되기 전 상태
  1. Foreground
    a. Active : 앱이 화면에서 실행중인 상태
    b. Inactive : 앱이 화면에서 실행중이나 어떤 신호도 받지 않는 상태
    • 갑자기 전화가 왔다거나, 알람이 울린다거나

      그럼 PIP 모드나 전화 알림창이 위에만 떠있을 때는 어떤 상태일까?

  1. Background
    • 앱이 화면에 보이지는 않지만, 코드를 실행하고 있는 상태
      • 멜론으로 노래를 듣고 있거나, 유튜브 프리미엄으로 영상 보는 중
  1. Suspend
    • 곧 종료될 상태
    • 언제 NOT Running 상태로 돌아가는지는 알 수 없다

AppDelegate

Process Lifecycle (App Launched / App Terminated)

  • iOS 12까지는 AppDelegate.swift 에서 앱의 생명주기를 모두 관리
  • iOS 13에서 iPadOS가 등장했고, iPad의 멀티 윈도우 기능 등장하면서, 이를 관리해줄 객체 필요 - SceneDelgate

SceneDelgate

UI Lifecycle (Enter Foreground / Became Active)

  • Scene이 새롭게 생성되고 종료되는 트리거를 AppDelegate에게 알려줌으로써
    AppDelegate가 앱의 생성/종료 시점 통제
  • 만약 iOS 최소버전을 13 미만으로 내리고 앱을 실행시키려고 하면,
    여기저기서 각종 에러가 발생 - iOS 13 이후부터 SceneDelegate가 작동하기 때문
    • 에러나는 함수와 클래스에다가 @available 키워드를 붙여주자

0개의 댓글