복습질문 정리

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까지 추가로 필요함!!

생명주기 그림으로 이해하기

[참고자료]

iOS) 앱/Scene 생명주기

Q. iOS Programming에서 생명주기가 있는 객체는 무엇들이 있는가? (수업 내용 한정)

App Delegate , Scene Delegate(iOS 13.0이상부터 생겼음)

5가지 생명주기에 자세하게 객체가 호출하는 메서드 조사

[참고자료]

[iOS] AppDelegate와 SceneDelegate

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를 어떻게 업데이트할지 알려줌

[참고자료]

[iOS] MVC 패턴에 대해 알아보자

이제 본격적으로 만들어보려고 하겠습니다

스타벅스로 해보겠습니다!!

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 화면이동 데이터 전달

[iOS / Swift] 화면을 전환하는 다양한 방법들

최종 과제 결과물

UI 부분
다 구현을 못 해봐서 아쉬움이 많이 남았다...
아직까지도 UI 작업이 부족해서 6주안에 끝장내야한다

시뮬레이터

주문로직 구현하느라 라이프사이클 못 해봤다
주문로직 UI 완벽하게 못 해봐서 아쉽다...

주문로직 시뮬레이터(13promax)
https://s3.us-west-2.amazonaws.com/secure.notion-static.com/7329e226-08da-4c66-a0ca-08b54423b109/Simulator_Screen_Recording_-_iPhone_13_Pro_Max_-_2022-12-31_at_05.11.41.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20230102%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230102T141155Z&X-Amz-Expires=86400&X-Amz-Signature=d6d9ce8a8a1657c040c6a0e6eeffdb29c86896006fc4a7525d1566a87fcd1502&X-Amz-SignedHeaders=host&response-content-disposition=filename%3D%22Simulator%2520Screen%2520Recording%2520-%2520iPhone%252013%2520Pro%2520Max%2520-%25202022-12-31%2520at%252005.11.41.mp4%22&x-id=GetObject

구현했던 UI화면입니다...
주문로직까지 이어지게 만들고 싶었는데 못 해서 아쉽습니다..

스타벅스 UI 연습(12 promax)
https://s3.us-west-2.amazonaws.com/secure.notion-static.com/b6eb3f41-6d89-4141-84c9-b2167ff4befa/Simulator_Screen_Recording_-_iPhone_12_Pro_Max_-_2022-12-31_at_10.23.22.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20230102%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20230102T141348Z&X-Amz-Expires=86400&X-Amz-Signature=846f93609abbfc7c34e4e6c56741dd7fbe4d454a5447ef68691d635c5f2a49f9&X-Amz-SignedHeaders=host&response-content-disposition=filename%3D%22Simulator%2520Screen%2520Recording%2520-%2520iPhone%252012%2520Pro%2520Max%2520-%25202022-12-31%2520at%252010.23.22.mp4%22&x-id=GetObject

이번주차 과제 다짐
1) 이번주차에서 구현해야할 것들에 집중하기(기능적인 면)
2) UI도 당연히 따라와야 함(특히 collectionview와 tableview custom!)
3) 코드 작성 익숙해지기
4) 시간 관리 잘하기
5) 스트레스 덜 받기(실력향상을 위해 공부하는 건데 필요이상으로 스트레스 받고 있음, 스위프트 처음하는 건데 못 하는 거 당연하다고 생각하기 대신 노력은 끝까지 하는 거다!!)

profile
Challenging & Growing

0개의 댓글