SSAC_iOS_Day 7 | TIL

린다·2021년 10월 6일
0

SSAC_iOS_Dev

목록 보기
3/33
post-thumbnail

👩‍💻 수업

📂 Segue

  1. Present Modally: 아래에서 위로 화면이 등장
  2. Show: 오른쪽에서 화면이 등장(Navigation Controller가 있는 경우, 없으면 Present Modally와 동일하게 작용함)

📂 View Controller의 생명주기

  • view 계층 구성: content ➡️ Navigation Controller ➡️ Tab Bar Controller ➡️ UIWindow ➡️ Device
  • viewDidLoad() ➡️ viewWillAppear() ➡️ viewDidAppear() ➡️ viewWillDisappear() ➡️ viewDidDisappear()
  • Modal은 완전히 삭제될 수 있기 때문에 껐다가 다시 키면 viewDidLoad()함수가 항상 호출된다. 하지만 Navigation Controller 혹은 Tab Bar Controller에 연결된 뷰들은 항상 남아있기 때문에 viewDidLoad() 함수는 단 한 번만 호출된다.

📂 Unwind Segue

  • Button과 같이 이벤트 트리거를 일으킬 수 있는 컴포넌트를 배치한다.
  • 해당 뷰를 닫았을 때 이동하고 싶은 뷰 컨트롤러에 다음과 같은 코드를 입력한다.
@IBAction func unwindTabViewController(_ sender: UIStoryboardSegue) {

}
  • 추가해줬던 버튼을 평소에 코드와 연결하듯이 exit과 연결시켜준다.

  • 원하는 세그를 선택해주면 된다.

  • 이렇게 구성하지않고 거꾸로 segue를 연결해주면 겉으로 보기에는 차이가 없어보이지만 안에서는 화면이 사라지지 않고 계속 쌓이고 있는 문제가 발생할 수 있으니 unwind segue로 구성해줘야한다.

📂 Library

Library란?

  • 필요한 기능들이 묶인 코드들의 묶음
  • 효율적인 코드 작성을 위해 Class 혹은 Function으로 만들어진 것
  • 라이브러리를 install 할 수 있는 방법
  1. Cocoapods
    : 많은 라이브러리들에서 이 방법을 지원하고 있음. 하지만 build speed가 느리다는 단점
    : 또한 프로젝트를 빌드할 때 마다 모든 라이브러리들이 함께 빌드되어 속도가 느리다.
  2. Carthage
    : build speed는 조금 빠름 하지만 지원되는 라이브러리들이 많지 않음
  3. SPM(Swift Program Manager)
    : 애플이 지원한다는 장점(XCode내에서 바로 설치가 가능함) 이전까지는 지원하는 라이브러리가 많지 않았지만 현재는 많이 사용되고 있는 추세
  4. Manual
    : 수동으로 코드 넣는 방법

오늘 실습에서 사용한 라이브러리들!
IQKeyboardManager
FSCalendar
TextFieldEffects
SideMenu

cf) 라이브러리 vs 프레임워크 ➡️ 자율성/주도권
프레임워크는 iOS처럼 주어진 상황안에서 주어진 변수 등 제한이 많음. 정해진 프레임 안에서만 작업이 가능하다.
하지만 라이브러리는 조금 더 자유롭게 사용할 수 있음. 직접 코드를 제어할 수 있음!

Dependency Rule

  • 소프트웨어 버전 규칙
  • Major: 기존 버전과 거의 호환되지 않음. API가 바뀌면 Major 버전 + 1 ➡️ 이런 경우 기존 메서드 등이 deprecated되어 거의 사용할 수 없음
  • Minor: 기존 버전과 호환됨. 새로운 기능이 추가되는 경우 Minor 버전 + 1
  • Patch: 기존 버전에서 버그를 수정하는 경우 Patch 버전 + 1

📂 UserDefaults

  • iOS 디바이스 기기(로컬)에 저장 ➡️ 앱 삭제 시 관련 데이터 함께 삭제됨 ➡️ 백업/복구 기능이 필수
  • 저장
UserDefaults.standard.set(저장할 값, forKey: "저장할 키")
  • 값 불러오기
UserDefaults.standard.저장한값타입(forKey: "저장한 키")

cf) UserDefaults vs DataBase

UserDefaultsDataBase
단일 데이터 값(경량)유사한 대량 데이터 값(중량)
Apple에서 제공해주는 Key-Value 형태의 기본 저장소Core Data(by Apple), Realm, SQLite
자동 로그인 여부, 알림 수신 여부 등 간단한 사용자 기본 설정영화 관리 데이터, 일기, 채팅 내역 데이터 등

👩‍💻 추가 스터디

📂 Storyboard Reference

  • 스토리보드를 사용하여 협업하는 경우, 앱이 충돌이 생기지 않도록 개발하는 방법
    ➡️ 100% 코드로 작업하기 혹은 하나의 스토리보드 안에 하나의 뷰컨트롤러만 두면서 스토리보드를 나눠서 작업하기
    ➡️ 이때 스토리보드를 나눠 작업하기 위해 Storyboard Reference를 활용한다.

👩‍💻 미션

📂 UserDefaults Upgrade

  • UserDefaults에 기본 자료형 혹은 배열의 형태로 저장이 가능하다. 하지만 커스텀 클래스 객체는 바로 저장을 할 수 없다. 이를 저장하고 가져오기 위해서는 어떤 과정이 필요할까?

📂 iOS Sandbox System

  • UserDefaults는 iOS의 어느 곳에 저장이 될까?
    AppData - Library - Preferences - plist에 Dictionary(Key-Value)형태로 저장된다.
    cf. 사진 촬영 후 저장하는 경우 Documents 폴더 활용
    cf. Library - SplashBoard - Snapshots : Splash 화면에서 사용하는 혹은 백그라운드 상태에 있을 때 snapshot을 애플이 자동으로 저장해두고 사용함. 마지막으로 사용한 화면이 아닐 수도 있음.
  • iOS 앱 설정에서 앱의 크기를 확인했을 때 문서 및 데이터는 무엇을 의미할까?
  • 애플은 사용자의 데이터를 어떤 정책에 기반해 저장하고 관리하며 보안에 신경을 쓰고 있을까?

0개의 댓글

관련 채용 정보