!
아랫쪽 빨간 박스에서 실행되는 메소드들의 stack을 확인할 수 있다.
왼쪽 빨간 박스에서 view들의 계층을 확인할 수 있다.
콘솔에 "PO"를 활용해서 디버깅할 수 있다.
--> po: print object, 객체의 description 메서드 호출 결과 출력
https://ohgyun.com/635 참고
클래스에 private 프로퍼티(A)를 외부에서 사용하고 싶을 때 그 프로퍼티(A)가 있는 곳에 클로저를 인자로 받아오는 메소드를 만드는 방법이 있다. 이 메소드를 통해서 private 프로퍼티(A)를 외부에서 사용할 수 있다. (단, 호출은 할 수 있지만 변형은 제한된다고 알고있다.)
class Players {
private players = [Player]()
func showEachPlayer(behavior: (Player) -> ()) {
players.forEach {
behavior($0)
}
}
}
- 모르는 건 그 순간에 이해하려고 노력하고 말해보자
- 질문하자. 질문을 할 때는 횡설수설하지 말고 질문을 정리하고 명확하게 하자.
- 개념적인 걸 알았으면 practical 하게 코드로 녹여보자
- 집중이 잘 될 때 하는 일과 아닐 때 하는 일을 나눠야 한다. 긴 호흡의 집중과 짧은 호흡의 집중을 구분할 수 있어야 한다. 학습의 덩어리가 큰지 작은지 아는 게 중요하다.
- 너무 디테일하게 하지 말고 핵심만 요약해 보자. 다른 사람의 자료나 지식, 생각이나 접근을 내 방식대로 소화하거나 표현/정리해보고 내 식대로 다시 변형하거나 구현해보자
- 지식을 잇는걸 잘해야 학습도 잘한다. 내가 알고 있는 것 위에 쌓아 올리자.
[ 실패 하나 😊 ]
의도한 것과 다르게 나타났던 부분
1. UIImageview가 StackView에 5개만 쌓여야 하는데 10개가 쌓였다.
2. 모든 UIImageview는 StackView에 들어갔지만 몇몇 UIImage는 출력되지 않았다.
3. 객체마다 다 다른 값이 들어가야 할 부분에 모두 같은 값이 들어갔다.
문제의 원인
1. 코드 상단에 초기화 해놓은 클래스 설정과 이 클래스와 관련있는 다른 변수들의 설정이 달랐다. 아래에 짜놓은 코드는 이 두 개를 혼합해서 쓰고 있었기 때문에 의도대로 되지 않았다.
2. UIImage(name: A.description)에서 A.description이 이미지의 이름과 매칭되도록 해줘야 하는데, 예외의 경우를 처리하지 않아서 몇 몇 UIImage만 출력이 되지 않았다.
3. 같은 값을 가져와서 모든 객체에게 같은 값을 넘겨주고 있었다.
[ 결론 👩💻 ]
나는 이 문제를 3일 넘게 붙잡고 있었고, 이거 때문에 봐도 봐도 모르겠고 옆사람들에게 물어봐도 모르겠고 해서 결국 마스터에게 찾아가서 물어봤다. 차근 차근 어디가 문제인지 혹시 이게 문제는 아닌지 저게 문제가 아닌지 되짚어가는 걸 보기만 해도 배운 느낌이다.
일단, 문제가 있는 부분부터 차근차근 코드를 추적해서 보자.
그리고 view에 문제가 있다면 코드만 보지말고 view 계층도 추적하면서 봐보자.
집중이 안될 때는 급한 일?이나 짧게 끝나는 일 부터 시작하자. '아 이것만 하자' 하고 한 번 시작하면 집중과 흐름이 잡히는 것 같다.
오전 시간을 그냥 보내지 말자.
질문도 하면 할수록 나아지고 실패도 하면 할 수록 나아진다.
실패하면서 배우는 건 당시에는 스트레스를 받기는 하지만 생각보다 더 재밌다.
나중에 내가 어떤 걸 할 수 있게 될지 조금 기대된다.
seize the day
- 죽은 시인의 사회