
야구게임만들기 과제를 하다가 게임 중 포기(?)를 하고 다시 메뉴로 넘어가기 위한 기능을 구현하는 와중에 문제가 발생하였다.
야구게임만들기 과제를 하다가 두 클래스 간의 함수를 서로 호출 하고 싶어서 상속을 하여
super를 사용하였더니 아래와 같은 에러가 발생하였다.
class BaseballGame: Main{
func start()
while
......
}
class Main{
func start()
while
.......
}

뭔가 계속 돌고 도는 느낌으로 에러가 발생한 느낌이 들었다.
그래서 방법을 찾아보니 두 가지 정도의 방법이 있었다.
클로저를 사용하는 방법Delegate 를 사용하는 방법클로저 캡쳐를 사용하여...?
참조 -> https://wody.tistory.com/8


BaseballGame클래스에cancelGameHandler를 반환 값이 없이 클로저로 선언해주고 호출해 주었다.

Main클래스의start()함수를 클로저에게 할당해주었다(?)
강한 참조에 의한 순환을 막기 위해[weak self]를 사용하였다(?)

원하는대로 잘 된 것을 알 수 있다....
예제:

delegate를 사용해 위임(?)을 해줬다.

Main클래스를BaseballGame클래스에게 위임(?)

BaseballGame클래스(위임 받는 클래스?)에서 프로토콜로 정의

delegate인스턴스 생성

BaseballGame클래스에서Main클래스의start()함수 실행

똑같이 잘 구현되었다.