1. ![](https://i.imgur.com/HdY3rUI.png) - Alignment를 `Fill` 로 했을 경우 스택뷰의 크기에 맞춰서 콘텐츠들의 크기가 스택뷰에 맞게 조정됩니다. - Alignment를 `center` 로 했을 경우 스택뷰의 가운데로 콘테츠들이 정렬이 됩니다. - 그래서 따로 스택뷰안의 제약을 두지 않아도 Alignment `Fill`을 사용하여 콘텐츠들의 크기를 늘릴 수 있었습니다. 2. ![](https://i.imgur.com/vA1sKcD.png) - 사장과 비서의 개념으로 비유해서 `StockManagerViewController`가 사장이라고 생각하고 `JuiceMakerViewController`가 비서라고 생각했을때, 비서의 이름을 프로퍼티명으로 하면 수행해줄 일에대해 명확히 표현해줄 수 있을 것 같다고 생각했습니다. 그래서 `juiceMakerViewControllerDelegate` 라고 변수명을 수정해 주었습니다. - 현재 프로젝트에서는 강한 순환 참조가 발생하지 않는다고 판단했지만, 뷰컨트롤러가 서로 참조하고 있고`weak`로 선언하지 않을 경우 인스턴스의 **Reference Count**를 증가시켜 강한 순환 참조가 발생할 여지가 생기므로 `delegate`는 `weak`로 선언하는것이 안전하다는 결론을 내렸습니다. 3. ![](https://i.imgur.com/liy63RF.png) 고차함수 `forEach`는 컬렉션 타입의 인스턴스 메서드로, 파라미터로 반복할 구문을 클로저로 작성해 넘겨줄 수 있습니다. 반복문 안에서 사용가능한 `continue` `break` 같은 명령어는 사용할 수 없는 특징이 있습니다! 4. ![](https://i.imgur.com/mWoE16A.png) - `weak` 키워드는 해당 인스턴스를 참조할때 RC를 증가시키지 않는 특징이 있습니다. - 뷰컨트롤러가 뷰를 강하게 참조하고 있고 뷰안에 있는 뷰객체들(`Label, button ...`) 또한 `IBOulet`으로 참조하고 있습니다. - 앱의 메모리가 부족해지는 상황이 발생하면 뷰 컨트롤러는 `didReceiveMemoryWarning()`을 호출하게 되면서 뷰를 nil 처리하여 메모리에서 해제하는 상황이 발생할 수 있습니다. 이때 뷰 컨트롤러가 `IBOulet`을 강하게 참조하고 있다면 뷰가 메모리가 해제되었는데 뷰객체들이 메모리해제가 되지 않는 현상이 발생할 수 있어 `weak`로 선언한다고 이해하고 있습니다.