[TIL] Today I Learned 2020.02.08

Lena·2020년 2월 8일
0

TIL (Today I Learned)

목록 보기
3/19
post-thumbnail

오늘 한 일

  1. Auto Layout이란 뭔지, 어떤 방식으로 View의 위치와 크기를 자동으로 결정하는지 간단하게 알아봤다
    (Auto Layout Cookbook: https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/LayoutUsingStackViews.html
    iOS Auto Layout:
    https://zeddios.tistory.com/380)
  2. Window와 View와 ViewController의 관계에 대해 공부했다
  3. 전날 오늘 해야할 일로 정했던 3번 내용과 관련된 공유 받은 애플 공식 문서를 읽었다
    (https://developer.apple.com/documentation/uikit/view_controllers/managing_content_in_your_app_s_windows)
  4. 이전 단계에서 했던 갤러리에서 이미지를 가져오는 코드를 보면서 Delegate Pattern이 코드적으로 어떻게 동작하는지 이해했다

새롭게 알게 된 것

  1. Auto Layout은 다른 View들 간의 관계를 이용하여 View의 위치와 크기를 자동으로 결정하는 Layout System 이라는 것
  2. Window - View - ViewController의 관계

    (출처 : 애플 공식홈페이지)

Window는 View들의 컨테이너 역할이다.
Window는 View를 상속한다. 즉 View가 부모(parent)고 Window가 자식(child)이다.
즉, 자식인 Window는 부모인 View의 모든 프로퍼티나 메소드를 상속받는다.


그런데 이 때 Window가 View에 접근해서 속성을 바꾸거나 메소드를 변경할 수 없다. 왜냐하면 자식은 부모 클래스의 내용을 변경할 수 없기 때문이다. 그렇기 때문에 View Controller가 필요하다. <- 이 부분은 공부하면서 스스로 이해한 내용이기 때문에 정확하지 않고 확인이 필요하다.

ViewController는 View와 마찬가지로 UIKit 에서 UIResponder를 상속받는다.

Window가 하는 일 중 Window의 root Viewcontroller변경하는 일이 있다.

적용해 본 것

구현에 필요한 내용을 공부하고 코드 구현을 시도했다.
'안다'의 10단계 중 '내가 아는 내용을 설명할 수 있다' 실천해 봤다.

1) 들은 적이 있다.
2) 여러 번 들었다.
3) 들은 내용을 대충 말할 줄 안다.
4) 핵심내용을 정확하게 전달할 줄 안다.
5) 말한 내용을 할 줄 안다.
6) 말한대로 행동하고 산다.
7) 말한 내용을 시킬 줄 안다.
8) 가르칠 줄 안다.
9) 체계적으로 가르칠 줄 안다.
10) 평가·분석할 줄 안다.

오늘의 시도와 결론

[ 성공 하나 😊 ]
끊임없는 이론 공부에서 벗어나 한 주제마다 학습 시간을 정해서 공부하고 이해했다.
이번에는 시간을 정해두고 1~1시간 20분정도로 정하고 딱 그 시간에 맞춰서 공부했다.

[ 결론 👩‍💻 ]
동작 원리와 같은 개념이나 이론적인 접근을 하다보면은 끝도 없이 들어가곤 해서 점점 원래 구현하기 위해 알아야겠다고 생각했던 목적있는 학습과 멀어지는 경험을 최근에 자주 했었다. 이해하는데 그리고 자료를 찾는데에 시간이 오래 걸릴거라고 생각해서 시간을 정해두고 해본 적은 없었는데, 막상 시간을 정해두고 해보니 꼭 그렇지도 않았다. 시간이 정해져 있으니 그 정해진 시간 안에서 시간을 분배해서 효율적으로 자료를 고르고 정보를 수집하고 이해하려고 하는 노력이 있는 것 같다. 이 방법을 앞으로 계속 시도할 생각이다.

[ 성공 둘 😊 ]
내가 학습한 내용을 다른 사람에게 설명했다.

[ 결론 👩‍💻 ]
다른 사람에게 설명하기 전에는 들어본 정도, 다른 사람이 말하면 알아듣는 정도였다. 그런데 내가 다른사람에게 설명을 하니까 조각 조각 흩어져 있던 정보들이 하나의 흐름으로 만들어져서 정리되는 효과가 있었다. 앞으로 내가 어떤 것을 시간을 정해놓고 학습하고 옆 사람에게 설명해보고 내가 어디를 모르는지 어떻게 이해했는지 말해보는 방법을 계속 시도할 생각이다.

[ 실패 하나 😢]
시간 관리 미스. 해야할 일이 많은데, 생각보다 옆으로 새는 시간이 많았다. 그래서 막상 미션은 구현하지 못했다.
[ 결론 👩‍💻 ]
쉬는 시간도 위의 학습 시간처럼 시간을 정해놓고 하는게 좋을 것 같다. 내일 부터 시도!

궁금한 점

🧐❓: Delegate를 왜 쓸까?

😁 ❗️ 블로그에서 찾아보자면, Delegate 없이도 구현은 할 수 있지만 Delegate를 사용하는게 재사용성 면을 고려했을 때 Delegate를 쓰는게 더 낫다는 글을 봤는데 구체적인 이유나 근거는 현재로써는 알 수 없다.

🧐❓: 포토 라이브러리(갤러리/ 사진앨범)에서 이미지를 가지고 올 때 Delegate는 '위임을 하는 객체'가 누구고 '위임을 받는 객체'는 누구고 '어떤 것/행동'을 위임하는 걸까?

😁 ❗️
... 찾아서 업데이트 할 예정.

🧐❓: iOS에서 View와 ViewController는 어떻게 다를까? 어떤 기준으로 분리할 수 있을까?

😁 ❗️
... 찾아서 업데이트 할 예정.

내일 할 일

  1. 읽을거리 읽어보기
    1-1. 참 쉬운 Pull Request 가이드
    노션에 링크 있음
    1-2. iOS 개발자 로드맵
    학습할 내용이 얼마나 남았는지 확인하고 학습 계획을 세우는데 사용하기.
    모든 것을 다 모르더라도 어떤 상황에서 왜 필요한지 알아가는 게 중요하다.
    https://github.com/godrm/mobile-developer-roadmap/blob/master/README.md
    1-3. Auto Layout Guide
    https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/index.html

  2. UIImageView 비율 적용하기 및 일정간격으로 한 라인에 7개의 UIImageView 넣기

  3. Delegate 에 대해서 공부하기. + 왜 Delegate를 쓰는지

  4. View의 LifeCycle 공부하기

  5. 이전 TIL에 업데이트 예정으로 남겨놨던 질문의 대답 업데이트 하기

  6. 해보기
    https://developer.apple.com/documentation/uikit/views_and_controls/uikit_catalog_creating_and_customizing_views_and_controls
    공식문서에 있느 기본 뷰와 컨트롤 데모와 코드. download 받으면 xcode 프로젝트 파일이 있어서, 실제 데모를 돌려보면서 구현 코드를 참고할 수 있음.

느낀점

궁금한건 많은데 하루가 짧아서 다 못보고 자는 것 같아서 아쉽다.

그리고 내가 학습이라는 목적으로 정보를 모으는 것만으로는 공부했다고 말할 수 없다는 걸 알았다. 설명할 수 있어야 하고 가르칠 수 있고, 또 마스터의 말처럼 그것에 대해서 한 마디로 설명할 수 있어야 진짜로 아는 것이란 걸 깨달았다.

조금만 쉬고 해야지가 거의 반나절이 되는 마법을 매 주말마다 겪는 것 같다.

나중에 하면 안한다. 나중에는 나중에 해야할 일이 또 생긴다. 그러니까 지금 해야 한다.

실패하면서 배운다. 실패를 거듭하면서 배운다. 실패는 할 수록 나아진다.

또 공부하면서 계속 Why?? 왜?? 를 궁금해 하는 건 좋은 것 같다.

profile
Swift, iOS 앱 개발 공부하고 있어요!

2개의 댓글

comment-user-thumbnail
2020년 2월 9일

글을 읽으면서 성장하고 변화하는 레나가 느껴져요!! 대단쓰!!! 레나가 느낀점이 제게도 와닿는게 많네요 .. 👍🏻👍🏻

1개의 답글