Skip to content

[Fix]자식 코디네이터가 부모 코디네이터에서 안 사라지는 초대박 긴급 이슈 #1

@SHcommit

Description

@SHcommit

진작에 체크 했어야 했는데 개발 당시 네트워크 과제 마감일이 얼마남지 않았고 제일 중요한 TCP 통신을 활용한 채팅을 서버와 연동하는 파트만 남았기에 코드의 에러들을 충분히 파악하지 못햇습니다.......

그 결과 각각의 coordinator에서 finish함수는 구현했지만 실제로 호출을 하지 않았습니다. 너무 바빴던 나 머지.. 시험도 끝나고 과제도 끝나서 추후 확인 했는데 parent coordinator에서 child coordinator의 인스턴스가 계속해서 생성만 되는 문제를 발견했습니다.

스크린샷 2023-06-27 오전 6 14 56

위와 같이 loginCoordinaotr -> SignUpCoordinator로 갔다가 다시 SignUpCoordinator가 해제될 때 loginCoordinator의 loginVC뷰가 will load되는 시점에 loginCoordinator가 보유중인 자식 코디네이터가 삭제됬는지를 프린트 하려고 합니다.

ezgif com-video-to-gif

"와우 자식 코디네이터는 할당 해제 되지 않고 쌓여만 갔다 OTL"

이 문제는 자식 코디네이터에서 finish함수는 구현해줬고 이 함수를 통해 자신이 보유중인 child coordinators삭제 후 parent coordinator로부터 자신이 삭제되야만 사라집니다.

image

여기 친절하게 이전에 주석으로 썼었는데 .... 호출을 안해줬네ㅠㅠ

그래서 VC가 회면에서 사라질 때 해당 코디네이터를 부모 코디네이터로부터 제거하는 finish함수를 호출하면!!
스크린샷 2023-06-27 오전 6 23 22

ezgif com-video-to-gif (1)

짜잔!!

이전에 커스텀 해둔 코디네이터를 여가 프로젝트에 도입하려고 석현이형이 제 코디네이터 관련 코드를 훑다가 형이 발견한 코드인데
image

"굳이 왜 다운 캐스팅을 해서 추상화를 깨는 것인가!!?" 이땐 뭐가 문젠지 도저히 몰랐는데 생각해보니까 다운캐스팅해서 parent의 멤버변수를 사용할 것도 아닌데... 굳이 할 필요가 없었다는 것을 뒤늦게 약 30분만의 대화 끝에 알게 되었습니다.. 크으..

image

수정 완료 +_+

그리고 혼자 removeSelf가 잘 동작되는지~ 자식 코디네이터 부모로부터 삭제 잘 되나 봤더니 자식이 남아있다는 문제를... 발견했다는 사실~

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions