---
# System prepended metadata

title: 고민한 점

---

# 고민한 점
## 🤝 Merge 내역
### Model / ViewController
모델과 뷰컨트롤러를 서로 다른 사람이 짰을 경우에도 UI연결을 해주기만 하면 계산기가 제대로 작동하는지 실험해보고 싶기도 하고 step1-step2의 코드리뷰를 해본 결과, 모델의 로직이 거의 비슷했기 때문에 모델 코드는 세홍 위주, 뷰컨트롤러 코드는 로웬 위주로 머지해봤습니다. -> ~~제대로 실행되어 기분이 좋습니다 😃~~

<br/>

### TypeAlias
기존에 선언되어있는 타입에 새로운 별칭을 붙여 반복되어 사용되는 코드의 길이를 줄이고 가독성을 높이려고 사용하게 되었습니다.
```Swift!
typealias CurrentItem = (`operator`: String, operand: String)
```

```swift
//before
calculateItemStackView.addCurrentItem(operator: currentOperator,
                                      operand: currentOperand)
inputHandler.addInput(about: currentOperator, and: currentOperand)
```

```swift
// after
calculateItemStackView.add(currentItem)
inputHandler.addInput(about: currentItem)
```

<br/>

# 조언을 얻고 싶은 점
### 🤔`layoutIfNeeded()`메서드 사용
레이아웃을 새로 업데이트하는 메서드는 꽤나 시스템 부하가 큰 메서드라고 조사한 적이 있습니다. 현재 코드에서는 UIScrollView를 상속한 CalculateItemScrollView 타입에 override를 통해 `didAddSubview(_:)` 메서드를 재정의하여 스크롤을 최하단으로 내려주고 있습니다.

subview의 인스턴스가 생성되고 arrangedSubview로 append되는 CalculateItemStackView 타입의 `add(_:)`메서드에서 `didAddSubview(_:)`메서드를 호출하고 있는데요, didAddSubview를 재정의하지 않고 스크롤의 위치를 잡아주는 새로운 메서드를 정의하는 것이 더 효율적일까요?

새로운 메서드를 정의한다면 `layoutIfNeeded`는 사용하지 않을 수 있을 것 같습니다!

또한 여기서 layoutIfNeeded가 호출됐을 때, 발생하는 시스템 부하는 어떤 키워드로 검색해보면 잘 찾아볼 수 있을까요? 