2022. 6. 6. 21:15ㆍiOS
c언어의 뿌리를 둔 모든 어플리케이션은 main()함수로 부터 시작된다.
이것을 엔트리 포인트라고 한다.
mvc 패턴이란?
-ios 앱의 객체 관계는 MVC패턴에 기반하고있다.
모델(Model)은 데이터를 담당한다.
뷰(View)는 데이터에 대한 화면 표현을 담당한다.
컨트롤러(Controller)는 모델과 뷰 사이에 위치해 데이터를 가공하여 뷰로 전달하고,
뷰에서 발생하는 이벤트를 입력받아 처리하는 역활을 담당한다.
서로의 관계
Model과 Controller
Controller는 모델에 직접적으로 접근할 수 있지만, Model은 Controller에 Notification & KVO 방식을 통해
모델의 변화를 알립니다.
Model과 View
Model은 UI에 독립적이며 View와 소통할 수 없으며, View 또한 불가능합니다.
View와 Controller
Controller는 View에 대해 outlet을 이용해 View에게 직접적으로 접근할 수 있습니다.
View는 Controller에게 구조적으로 미리 정해진 방식으로 Controller에게 행위에 대한 요청(delegate)과
데이터에 대한 요청(data source)을 할 수 있습니다. 뿐만 아니라, action(View) - target(controller)의 구조로
사용자의 행위에 따라 필요한 함수를 호출할 수도 있습니다.
사진과 같은 MVC 패턴이 여러개 모여 하나의 앱을 만들게 됩니다.
앱의 라이프 사이클 종류
앱의 라이프 사이클이란??(생명 주기)
ios 앱은 Not Running상태에서 시작하여 Inactive Active를 거친 다음, Suspended상태를 마지막으로 다시 Running상태로 돌아갑니다.
Not Running- 앱이 시작되지 않았거나 실행되었지만 시스템에 의해 종료된 상태를 나타냅니다.
Inactive- 앱이 전면에서 실행 중이지만, 아무런 이벤트를 받지 않고 있는 상태를 나타냅니다.
Active- 앱이 전면에서 실행중이며, 이벤트를 받고 있는 상태를 나타냅니다.
Background-앱이 백그라운드에 있지만 여전히 코드가 실행되고 있는 상태를 나타냅니다. 대부분의 앱은 Suspended상태로 이행하는
도중에 일시적으로 이 상태에 진입하지만, 파일 다운로드나 업로드, 연산 처리 등 여분의 실행 시간이 필요한 앱의 경우 특정 시간 동안
이 상태로 남아 있게 되는 경우도 있습니다.
(앱을 실행했다가 홈 버튼을 눌러서 나온 경우나 다른 앱으로 전환한 경우 background 상태에 있다고 함.
이 때 음악 앱처럼 백그라운드에서도 계속 동작하는 경우 background 상태에 있다고 한다.)
Suspended-앱이 메모리에 유지되지만 실행되는 코드가없는 상태입니다. 메모리가 부족한 상황이 오면 ios 시스템은 포그라운드에 있는
앱의 여유 메모리 공간을 확보하기 위해 Suspended 상태에 있는 앱들을 특별한 알림 없이 정리합니다.
(앱은 background 상태에 진입했을 때 다른 작업을 하지 않으면 Suspended 상태로 진입한다.
이 상태에서 os는 앱을 다시 실행했을 때 빠르게 로드할 수 있게 관련 데이터만 메모리에 올려놓는다.
만약 메모리가 부족해진다면 os는 이들 앱부터 메모리에서 해제한다.)
코코아 터치의 예시
뷰컨트롤러의 생명 주기
1. loadView
- 화면에 띄워줄 View를 만드는 메서드로 View를 만들고 메모리에 올려줍니다.
- 일반적으로 사용자는 이 메서드를 직접 호출하면 안됩니다.
2. viewDidLoad
- viewDidLoad 메서드는 뷰의 로딩이 완료 되었을 때 시스템에 의해 자동으로 호출됩니다.(loadView()직후 호출됨)
- Low memory와 같이 특별한 경우가 아니라면 화면이 처음 만들어질 때 한 번만 실행 되므로, 초기화 코드가 있을 경우 이 메서드 내부에 작성하면 됩니다.
3. viewWillAppear(나타낸다.)
- ViewContoller의 Root View가 로드된 이후에 Window의 View계층으로 더해지기 직전 호출되는 메서드입니다.
- 다른 view에 갔다가 다시 돌아오는 상황 에 해주고 싶은 처리는 이 메서드 내부에 작성해주면 됩니다.
- viewWillAppear와 viewDidAppear사이에 constraint와 layout이 적용된다.
4. viewDidAppear(나타났다)
- window 의 root view가 View 계층으로 더해진 직후 호출되는 메서드 입니다.
- View가 나타났다는 것을 컨트롤러에게 알리는 역할을 합니다. 또한 화면에 적용될 애니메이션을 그려줍니다.
5. viewWillDisappear(사라질 것이다)
- window 의 root view가 View 계층에서 제거되기 직전 호출되는 메서드입니다.
- View가 삭제되려고 하는 것을 ViewController에 통지합니다.
6. viewDidDisappear(사라졌다)
- window 의 root view가 View 계층에서 제거된 직후 호출되는 메서드 입니다.
- view가 제거되었음을 알려줍니다.
'iOS' 카테고리의 다른 글
다른 뷰 컨트롤러와 데이터 주고받기 (0) | 2022.06.09 |
---|---|
화면 전환의 종류 (0) | 2022.06.06 |
인터페이스 빌더에 대해서(IB) (0) | 2022.06.06 |
세그에 대해서 (ios 앱개발) (0) | 2022.06.02 |
xcode 설정 화면 용어 정리 (0) | 2022.06.02 |