티스토리 뷰

TIL

TIL ('21.03.18) - iOS View Life Cycle

learner._.Kio 2021. 3. 18. 23:07

학습내용

dismiss의 뜻은?

dismiss

  1. to decide not to think about or consider (something or someone)
  2. to send (someone) away : to cause or allow (someone) to leave

dismiss

  1. (고려할 가치가 없다고) 묵살[일축]하다 (=wave aside)
  2. (생각·느낌을) 떨쳐 버리다
  3. 해고하다 (=fire, sack)

iOS View Life Cycle

ViewController

  • Specify the views for a view controller using the loadView() method. In that method, create your view hierarchy programmatically and assign the root view of that hierarchy to the view controller’s view property.
  • 뷰가 보여주고 사라지는 걸 왜 알아야할까?
    • 앱이 언제 실행될 지 시점은 모르지만, 앱이 실행되었을 때 이벤트에 반응하는 코드들을 작성한다.
    • ex) 애니메이션효과, 음악, 리스트
     

꼭 모든 걸 사용할 필요는 없고, 필요한 경우만 사용해도 된다.

loadView()

  • Creates the view that the controller manages.
  • 컨트롤러를 관리할 뷰를 만든다.== 스토리보드를 사용하면 이미 뷰가 있는 상태이기 때문에 굳이 없어도 된다.
  • == 메인뷰를 로드할 때 호출되는 메서드

viewDidLoad()

  • Called after the controller's view is loaded into memory.
  • 뷰컨트롤러가 메모리에 로드된 이후 호출된다.
  • == 메인뷰가 있으니 여기서 초기에 보여주고 싶은 걸 설정하거나 마음대로 할 수 있다.

viewWillAppear()

  • Notifies the view controller that its view is about to be added to a view hierarchy.
  • 뷰컨트롤러가 뷰 계층구조에 더해질 것을 알려준다.
  • == 뷰가 이제 보여질 거라는 뜻!

viewDidApper()

  • Notifies the view controller that its view was added to a view hierarchy.
  • 뷰컨트롤러가 뷰 계층구조에 더해진 것을 알려준다.
  • == 뷰가 벌써 보인다, 이미 보여졌다라는 뜻!

viewWillDisappear()

  • Notifies the view controller that its view is about to be removed from a view hierarchy.
  • 뷰컨트롤러가 뷰 계층구조에서 사라질 것을 알려준다.
  • == 뷰가 곧 사라질 것이라는 뜻!

viewDidDisappear()

  • Notifies the view controller that its view was removed from a view hierarchy.
  • 뷰 컨트롤러가 뷰 계층구조에서 사라진 것을 알려준다.
  • == 뷰가 벌써 사라졌다. 이미 없어졌다라는 뜻!

deinit{ }

  • 메모리가 사라졌는지 확인
  • 초기화 해제 작업

modal

  • 현재 상태 그대로 잠깐 띄워준다.
  • full screen으로 띄우면 그 이전 상태가 사라진다.

 

문제점/고민한점 → 해결방안

Q) init을 입력받게 하면서 기본값을 10으로 하려면 어찌해야할지 계속 고민...

class FruitStock {
    private var fruit: FruitTypes
    private(set) var stock: Int = 10

    init(_ fruit: FruitTypes, _ stock) {
        self.fruit = fruit
        self.stock = stock
    }
}

var fruitInformation: [FruitTypes: FruitStock] = [
        .strawberry: FruitStock(.strawberry, 10),
        .banana: FruitStock(.banana, 10),
        .kiwi: FruitStock(.kiwi, 10),
        .mango: FruitStock(.mango, 10),
        .pineapple: FruitStock(.pineapple, 10)
    ]
  • init에는 매개변수만 넣어야한다고 생각했는데, 기본값 10을 지정하면 되는 것이었다... hailey 만세 🙌
class FruitStock {
    private var fruit: FruitTypes
    private(set) var stock: Int 

    init(_ fruit: FruitTypes, _ stock = 10) {
        self.fruit = fruit
        self.stock = stock
    }
}

var fruitInformation: [FruitTypes: FruitStock] = [
        .strawberry: FruitStock(.strawberry),
        .banana: FruitStock(.banana),
        .kiwi: FruitStock(.kiwi),
        .mango: FruitStock(.mango),
        .pineapple: FruitStock(.pineapple)
    ]

Q) 그리고 해결안된 것 투성이...

'TIL' 카테고리의 다른 글

TIL ('21.03.23)  (0) 2021.03.26
TIL ('21.03.22)  (0) 2021.03.22
TIL ('21.03.17)  (0) 2021.03.17
TIL ('21.03.15)  (0) 2021.03.16
TIL ('21.03.12)  (0) 2021.03.14
댓글