Q. 생명주기(Lifecycle) 이란 무엇인가?
앱의 실행부터 종료까지의 주기를 말한다.
시스템 알림에 응답하고 여러 시스템 관련 이벤트를 처리하는 단계들을 말한다.
이와 비슷하게 뷰 컨트롤러 생명주기(viewDidLoad, viewWillAppear)도 있다.
가장 중요한 5가지 생명주기에 대해서 먼저 조사
Not Running
: 아무것도 실행하지 않은 상태. (또는 실행중이긴 하지만 시스템에 의해서 종료된 상태)
Inactive
: 앱이 foreground 상태로 돌아가지만 이벤트는 받지 않는 상태. 앱의 상태 전환 과정에서 잠깐 머물거나 앱을 사용하다가 알람과 같은 인터럽트가 발생해서 잠시 유저이벤트를 받을 수 없는 상태.
Active
: 일반적으로 앱이 돌아가는 상태 (이벤트를 받는 단계)
Background
: 앱이 suspended 상태로 진입하기 전 거치는 상태
Suspended
: 앱이 background에 있지만 아무 코드도 실행하지 않는 상태.
Background와 Suspended의 차이
흔히 말하는 백그라운드 재생은 앱을 끄고 다른데로 이동해서도 실행될 수 있다는 것에 속함(멜론 같은 음악 앱)
suspended는 메모리가 부족하면 바로 제거해버림!
그렇다면 Scene Delegate가 존재하는 이유??
SceneDelegate는 iOS 13 이후부터 지원되는 multiple scene 기능에 잘 대응하기 위해 존재함
화면 분할(split) 쓸 때 필요함!
App Delegate + Scene Delegate까지 추가로 필요함!!
생명주기 그림으로 이해하기
[참고자료]
Q. iOS Programming에서 생명주기가 있는 객체는 무엇들이 있는가? (수업 내용 한정)
App Delegate , Scene Delegate(iOS 13.0이상부터 생겼음)
5가지 생명주기에 자세하게 객체가 호출하는 메서드 조사
[참고자료]
Q. 옵셔널이 나타난 배경과 사용하는 방법은 어떻게 되는가?
옵셔널이란??
값이 있을 수도 있고 없을 수도 있는 변수를 정의할 때에는 타입 어노테이션에 ?
를 붙여야 합니다.
이렇게 정의한 변수를 바로 옵셔널이라고 함
옵셔널은 어떤 값을 가지고 있는 것, 근데 그 값이 nil이거나 String이나 Int 타입 같은 형태도 가능
[참고자료]
iOS 옵셔널 관련 글
https://devxoul.gitbooks.io/ios-with-swift-in-40-hours/content/Chapter-2/optionals.html
Q. MVC 패턴은 무엇인가?
iOS 아키텍쳐 패턴 중 하나인 것이 MVC 패턴이다.
MVC 패턴은 애플에서 기본적으로 지원하는 디자인 패턴으로,
Model + View + Controller
구조의 아키텍처 패턴
Model
은 앱의 데이터와 비즈니스 로직을 가짐
View
는 사용자에게 데이터를 보여주거나 UI를 담당
Controller
는 Model과 View의 중간다리 역할로 View로부터 사용자의 action을 받아 Model에게 어떤 작업을 해야 하는지 알려주거나, Model의 데이터 변화를 View에게 전달하여 View를 어떻게 업데이트할지 알려줌
[참고자료]
이제 본격적으로 만들어보려고 하겠습니다
스타벅스로 해보겠습니다!!
Segue로 화면전환 구현하기 위해 공부
[iOS] Segue 정리
다음번 삽질 방지용으로 서치 해놓은 거 정리!!!!!!
저는 삽질을 많이 해서 이번 과제가 오래 걸렸어요....
이번 과제 오류 TOP 3-(1)
https://velog.io/@yoogail/내가자주-겪는-오류-this-class-is-not-key-value-coding-compliant-for-the-key
(2)
[Swift] Storyboard doesn't contain a view controller with identifier
(3)
[Xcode] Thread 1: signal SIGABRT 오류
[참고자료]
주문로직 구현할 때 필요한 정보들 구글링
IOS Segue 화면이동 데이터 전달
최종 과제 결과물
UI 부분
다 구현을 못 해봐서 아쉬움이 많이 남았다...
아직까지도 UI 작업이 부족해서 6주안에 끝장내야한다
시뮬레이터
주문로직 구현하느라 라이프사이클 못 해봤다
주문로직 UI 완벽하게 못 해봐서 아쉽다...
구현했던 UI화면입니다...
주문로직까지 이어지게 만들고 싶었는데 못 해서 아쉽습니다..
이번주차 과제 다짐
1) 이번주차에서 구현해야할 것들에 집중하기(기능적인 면)
2) UI도 당연히 따라와야 함(특히 collectionview와 tableview custom!)
3) 코드 작성 익숙해지기
4) 시간 관리 잘하기
5) 스트레스 덜 받기(실력향상을 위해 공부하는 건데 필요이상으로 스트레스 받고 있음, 스위프트 처음하는 건데 못 하는 거 당연하다고 생각하기 대신 노력은 끝까지 하는 거다!!)