안녕하세요.

델리게이트 패턴과 유닛 테스트 Example Code를 작성해보았습니다.

https://github.com/gwangyonglee/DelegatePatternExample

UITableViewCell에서 delegate 프로퍼티 변수를 weak를 설정한 이유

protocol을 class로 구현하지 않고 UITableViewCell에서 delegate 프로퍼티 변수를 weak를 사용하지 않는다면 Strong Reference Cycle. 즉, 메모리 누수가 발생합니다.
이를 방지하기 위해 protocol을 class로 구현하고 weak를 추가하면 메모리 누수를 방지할 수 있습니다.

Mock Delegate 변수 중 valueChangedCallCount은 어떤용도인가요?

Mock을 작성할 때 가장 많이 사용하는 패턴 중 메서드가 호출되었다는 것을 기록하기 위해 Boolean 값을 많이 사용합니다. 하지만 해당 메서드가 여러 번 호출될 수 있는 문제가 있고, Boolean 대신 Integer로 변경하여 해당 메서드가 몇번 호출되었는지를 테스트하는 것이 효율적 입니다.