[TIL] 200212, wed

delma·2020년 2월 13일
0

TIL

목록 보기
6/38

오늘 한 일

  • PokerGame step 5 진행
    • UISegmentedControl 사용
    • 52장 각 카드에 맞게 이미지 세팅
  • 리팩토링 수업(객체 지향, 함수 지향, 모듈화)

새롭게 알게 된 것

  • UISegmentedControl 코드로 그려보았음!
    • UISegmentedControl 인스턴스 생성시 인자로 배열을 넘기면, 해당 배열만큼 선택지가 생성됨
    • selectedSegmentIndex로 초기 선택 값 지정
  • private 접근 제어자를 사용하는 이유
    • 하위 객체일수록 private으로 감춰놓지 않으면 상위 객체 이곳 저곳에서 해당 변수를 가져다 쓸 수 있다. 그러면 어느 시점에서는 이 변수가 어디서 어떻게 변경되었는지 몰라 내가 원하는 의도대로 이것을 사용하기 어렵게 된다. 그러므로 private으로 감춰놓고, 상위 객체에서 필요한 형태로 메서드에서 가공해 리턴하는 방식이 낫다.

고민한 것

  • 카드가 pattern과 number를 가지고 있는데, 각각의 카드에 맞게 이미지를 어떻게 매칭할 것인가- 에 대해 많이 고민했다.
    각각의 pattern과 number는 enum 타입이어서, CustomStringConvertible 프로토콜을 채택해 이미지 이름과 매치되도록 String으로 변경해주는 메서드를 만들었다.
    ViewController에서 Dealer나 Card 등에 접근하는 건 이상한 것 같아, PokerGame으로 접근하게끔 했는데, 내부 속성이 private이어서 어떻게 해당 값들을 가져와야 하는지 고민이 되었다.
    오늘 수업이 이와 관련한 거였는데, private으로 접근하지 못한다고 해당 객체에서 getter 메소드를 만드는 것 말고, 상위 객체에서 필요한 상태로 private으로 선언된 변수를 가공해서 리턴하게끔 하라고 했다.
    오케이 거기까진 이제 알겠는데, 클로저를 응용해서 하는 부분은 좀 어려웠다.
    클로저 공부가 더 필요할 듯...!!!!
  • Stud Type을 선택했을 때, 7 Stud와 5 Stud에 따라 카드의 갯수를 달리 해주어야 하는데, 어떤식으로 구현할 지 고민했다.
    선택할때마다 PokerGame을 새롭게 만들어주는 방식으로 했음.
  • 스택뷰를 비우는 방법에 대해 고민했음.
    wholeGameStack.arrangedSubviews.forEach { $0.removeFromSuperview() } 이런식으로 스택뷰 안의 서브뷰들을 하나씩 제거하는 방법으로 비울 수 있다.

내일 할 일

  • PokerGame step5 완료!

느낀 점

  • 리팩토링 수업때 신기했다.. 멋있었다.. 나도 +_+.... 클로저와 객체지향, 함수지향에 대해 좀 더 공부해야겠음
  • 미션 진행하면서 집중이 잘 안되고ㅜ 생각들이 가공이 안되고 날 것 그대로 남아있어서 미션에다 갖다 쓰기 어려웠달까. 아무튼 지난한 시간이었어. 내일은 step5 끝내길!
profile
🌐Code makes world better

0개의 댓글