iOS의 ViewControlle의 생명주기는 개발함에 있어 굉장히 중요하다.

해당 View에 컨텐츠가 언제 나타나야 하는지, 컨텐츠의 내용은 무엇인지, 해당 컨텐츠의 내용이 뷰가 사라지면 어떻게 되야하는지 등등 개발함에 있어 반드시 알아야 하는 중요한 사항들이있다.

ViewController의 생명주기에 대해 알아보자!

1. ViewDidLoad()

공식문서에 의하면 뷰 컨트롤러가 메모리에 로드된후 호출되는 메소드이다.

다시말해 뷰가 메모리에 로딩이 완료되면 시스템에 의해 자동으로 호출되는 메소드로, 화면이 처음 생성될때 딱 한번 실행된다.

2. ViewWillAppear()

공식문서에 의하면 뷰가 뷰 계층에 추가될 것임을 뷰 컨트롤러 알려주는 메소드이다.

다시말해 뷰가 화면에 나타나기 직전! 해당 메서드가 호출된다!

그럼, ViewDidLoad 도 화면에 나타나기전, 수행되는데 이 둘의 차이는 무엇일까?

직접 구현해보면 차이를 파악알수 있다.

처음 View를 표시할때 ViewDidLoad() 가 호출되고, 그다음에 ViewWillApear() 가 호출된다,

그리고 다른 뷰로 넘어갈때, 마찬가지로 둘다 호출이 되지만 다시 이전화면으로 돌아갈때

ViewWillAppear() 메소드만 호출됨을 알수있다.

즉, ViewDidLoad() 는 메모리가 해제되기 전까지는 무조건 1번만 호출되며, ViewWillAppear() 메소드는 메모리와 관계없이 해당 뷰를 표시할때 무조건 호출되는 차이가 있다!

3. ViewDidAppear()

공식문서에 의하면 뷰가 뷰 계층에 추가되었음을 뷰 컨트롤러에 알려주는 메소드이다.

다시 말해 ViewWillAppear() 는 뷰가 표시되기 직전 호출되는 메소드라면,

ViewDidAppear() 는 뷰가 표시된 직후!!! 호출되는 메소드이다!

4. ViewWillDisappear()

공식문서에 의하면 뷰가 뷰 계층에서 제거될 것임을 뷰 컨트롤러에 알려주는 메소드이다.

다시말해 뷰가 사라지기 직전 호출되는 메소드 이다!

5. ViewDidDisappear()

공식문서에 의하면 뷰가 뷰 계층에서 제거되었음을 뷰 컨트롤러에 알려주는 메소드이다.

마찬가지로 ViewWillDisappear() 가 사라지기 직전 호출되는 메소드라면, ViewDidDisappear()는 사라진 직후 호출되는 메소드이다.

이와 같이 ViewController의 생명주기는 메소드의 이름만으로도 충분히 어떤일을 수행하는 메소드인지 짐작할수 있다!

이를 직접 구현하여 실제로 어떤 순서로 호출되는지 파악해 보자!

확실히 호출되는 순서를 보면 더욱더 이해하기 쉽다!

이 생명주기를 잘 기억하여 

View 에 표시되는 데이터나 저장해야하는 시점 등등을 적절한 메소드에 적절하게 사용하면 된다!

아주 기본적이면서 아주 중요한 내용이다!

  • 블로그 쓰는걸 두려워하지 말라
    → 이미 블로그가 많은데 이게 필요한가?
         ⇒ 필요함, 실제로 많은 블로그들이 있지만 꾸준한 블로그는 드문게 사실임
         ⇒ 유명한 블로그들은 그만한 이유가 있다, 그런 블로그들 특별한건 없다 다만 꾸준히 오랜기간 연재했을뿐
  • 어디선가 발표를 해봐라 그럼 내가 발표하기위해 더 열심히 공부하게 될것이다
  • 세미나, 컨퍼런스의 내용을 들으러 가는것도 좋지만 여러 사람을 만날기회로 생각하고 가봐라
  • 두려워하지말고 여기저기 자문을 구해봐라! 그분들도 삐약이들이 궁금증을 갖고 질문을 하면 좋아할 것이다

질문

  • 질문을 참지마라.. 나보다 윗사람들에게 질문하는것을 두려워하지말고 질문해라
    → 질문안하고 혼자 끙끙대면 오히려 안좋은 결과를 초래한다
  • 왜? WHY?
    •  업무를 지시받았을때 왜? 질문할것
      → 왜? 를 찾고, 목적에 따라 어떻게? 가 나와야 좋은 개발자가 된다
      → 하나를 알려줘도 100을 알수있는 개발자가 되려면 WHY? 의문을 가질것
      → 어떻게? 를 먼저 생각하면 결과가 산으로 갈수가 있다! 목적을 알고, 목적에 따라 개발하는게 좋음!
      → 어떻게? 보다는 왜? 를 먼저 알아야한다
  • 단, 질문을 하되 몇가지 생각하며 질문해야한다
    1. 핑프면 안된다
      → 내가 뭘 하려고하는데 뭘 찾아봤는데 어떤식으로 된다, 하지만 나는 어떻게 하려고 하는데 잘 안된다 이렇게했는데 잘 안되는데 혹시 왜 이러는지 알려주실수 있나요?
    2. 질문 안하는거 보단, 질문을 너무많이해서 '물음표살인마' 가 되는게 좋음
    3. 같은 질문을 반복해서 하지 말것!
    4. 질문을 할때는 질문에 대한 배경을 설명해야한다!
      → A 를 만들라고 하셔서 A를 만드려는데 제가 알아본바 B 방법은 ~~~~~ 하는 방식이고, C방법은 ㅁㅁㅁㅁㅁ 하는 방식인거 같습니다, 이 두개의 방법중 어떤게 더 효율적일지 감이 잡히지 않습니다 어떻게 진행하는게 좋을까요?
  • 역지사지
    • 상대방 질문에 대한 이해와 존중!
⚠️ 당신은 어떤 사람과 일하고 싶나요?

 

Q&A

  1. iOS 공부할때, UIKit 을 해야하는지 SwiftUI를 해야하는지?
    → 2년안에 취업을 생각하고 있다면 UIKit이 우선! 2년내에 취업할 생각은 없고, 아직까진 취미의 영역이다 하면 SwiftUI 로 해도 됨!
  2. 프론트엔드, 백엔드, 모바일 등 여러 분야가 있는데 여러가지 경험을 하기엔 시간이 오래걸리는데 어떻게 경험을 해야하는지?
    → 사실 경험하는건 좋은것이긴하나, 경험하는데 너무 많은 시간을 쏟지 않는게 좋다 1달정도면 튜토리얼 정도는 경험할수 있다! 다만 찍먹을 하는건 나쁜게 아님!
  3. 주니어, 인터미디에트, 시니어 개발자는 인터넷 회사에서 어떻게 나누어지는 구분인가요? 또 언제까지 보통 주니어라고 불리게 될까요?
    → 기준은 없는데 일반적으로 3년~ 5년정도면 주니어인거같다
  4. Swiftui 공부하면서 mvvm을 적용해서 코드를 작성하려고 노력하고 있는데 아직 어떤게 모델에 들어가야하고 뷰모델에 들어가야하는 지 구분하는 게 어렵습니다. 다른 사람들 코드를 보면서 제 나름대로 기준을 찾아가려고 하는데 혹시 추천하는 학습 방식 있으신지 궁금합니다!
    → 많이 해봐야한다, 같은 결과물을 A방법, B방법으로 반복 학습하며 익혀봐라! ( 아마도.. MVC방법, MVVM방법, VIPER방법 등등..? )
  5. 야곰 멘토님의 손을 거친 교육생들 중에 기억나는 분이 계신가요~? 있다면 어느분이고 왜 기억에 남으시는지 궁금합니당 :)
    → 일단 교육생이라고 생각하지 않는다, 다 동료고 친구이며 같이 공부하는 사람들임! 근데 기억나는 친구! 블로그를 꾸준히 작성하는 친구가 기억에 남는다! 지금 iOS 검색하면 1등으로 나오는 블로그일것이다
  6. ios 프론트 개발에서 TDD 를 어떻게 적용할 수 있을까요?
    → TDD 쉽지 않음,,
  7. 모르고 짜는 것에 대해 공부하다보면 너무 깊어지는 것 같아서 도대체 어느 정도까지 아는 게 좋은지, 그 공식 문서처럼 깊게 알아야 하는지 궁금합니다
    → 내가 이분야 전문가가 되겠다! 싶으면 깊게 공부하는게 좋다 하지만 그게 아니라면 굳이..?
  8. 야곰님께서 보시는 좋은 블로깅의 예시가 궁금합니다!
    → 꾸준히 써라.. 꾸준한게 제일 좋은 블로그임, 글이 틀리는걸 두려워하지 마라 나중에 수정하면 그만임!
  9. 공유라는 측면에서 노션보다는 블로그를 이용하는게 더 도움이 될까요?
    → 노션은 혼자보기에 좋음.. 블로그를 써보도록 할것!
  10. UI와 iOS 개발은 뗄 수 없는 존재일까요? 몇개월간 찍먹을 해봤는데, UI 짜는 게 너무 안 맞는 것 같아요 ㅠㅠ
    → UI가 안맞으면 어쩔수 없다.. 백엔드 찍먹도 해보고 이것저것 해보며 맞는걸 찾아보는것도 좋다

책을 보고있다

꼼꼼한 재은씨 책은 닉값을 한다!

 

엄청 꼼꼼히 설명되어 있다

 

이전에 들었던 강의에서

왜? 이게 왜?

하는 의문이 이책을 보니 다 해결되었다

 

책의 내용을 요약해서 올리고 싶지만 저작권의 문제때문에.

 

최대한 빨리 보고 실 프로젝트를 해봐야겠다

그리고 책을 다 본후 이해한 내용을 바탕으로 기본 개념을 다시 적는 형태로 블로그를 운영해야지

 

1) 구조체 선언

struct BasicInformation {
    let name: String
    var age: Int
}

Swift 에서 변수와 상수의 선언은 let 과 var 로 구성한다.

var 는 나중에 바뀔수도 있는 값!

let 은 나중에 바꿀수 없는 값!

 

예를들어..

let a: Int = 5
var b: Int = 5

a = 6		// 상수(let)기 때문에 오류가 발생한다

b = 6		// 변수(var) 이기 때문에 b 의 값은 6이 된다!

위와 같이 된다

 

앞서 선언한 BasicInformation 구조체를 사용해보자!

var hongInfo: BasicInformation = BasicInformation(name: "hong", age: 27)

// print 는 단순 데이터의 값만 출력!
print(hongInfo)
/*
BasicInformation(name: "hong", age: 27)
*/

// dump 는 데이터의 자세한 정보까지 출력해준다!
dump(hongInfo)
/*
▿ BasicInformation
  - name: "hong"
  - age: 27
*/

 

2) Class (클래스) 선언

class Person {
    var height: Float = 0.0 // 키 의 정보
    var weight: Float = 0.0 // 몸무게 의 정보
}

Person 이라는 클래스는 키 와 몸무게의 정보를 가지고 있다

 

Person 클래스를 사용해보자

let hong: Person = Person()
hong.height = 175.1
hong.weight = 95.3

print("hong : \(hong)")
/*
hong : Person
*/

dump(hong)
/*
▿ Person #0
  - height: 175.1
  - weight: 95.3
*/

 

기본적인 Swift 의 방향만 파악했다.

앞으로 공부하면서 더욱 자세히 알아보자!

+ Recent posts