-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Fix] UploadCodyViewController를 dismiss할 때 메모리가 해제되지 않는 현상 개선 #21
Conversation
- 누락되었던 자식 코디네이터를 추가하는 로직 추가 - createCody의 경우 dummyController를 추가하도록 개선 (탭바 아이콘 생성 용도)
- 메모리 누수 위험이 있는 곳에 weak 키워드 추가 - TabBarCoordinator 내부에 CoordinatorFinishDelegate 채택하여 구현
case .createCody: | ||
let coordinator = UploadCodyCoordinator() | ||
coordinator.start() | ||
let dummyController = UINavigationController() | ||
let tabBarItem = UITabBarItem.init( | ||
title: nil, | ||
image: page.pageIconImage, | ||
tag: page.pageOrderNumber | ||
) | ||
coordinator.navigationController.tabBarItem = tabBarItem | ||
dummyController.tabBarItem = tabBarItem | ||
tabBarItem.imageInsets = UIEdgeInsets(top: 13, left: 0, bottom: -15, right: 0) | ||
tabBarController.addChild(coordinator.navigationController) | ||
tabBarController.addChild(dummyController) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기서 코디네이터를 등록해도 실제로는 사용되지 않고 있기 때문에,
불필요한 메모리를 추가한다는 생각이 들어서
수정해서 개선해주었어요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
넵넵 최고최고!!
childDidFinish(childCoordinator, parent: self) | ||
switch childCoordinator.type { | ||
case .uploadCody: | ||
navigationController.visibleViewController?.dismiss(animated: true) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아..? tabBarController.dismiss(animated: true)
를 사용하는게 맞겠죠..???
deinit { | ||
coordinator.finished() | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
백 제스처로 화면을 pop 했을 때 코디네이터가 사라지지 않아서 이런식으로 처리해줬는데....
더 좋은 방법이 있다면 추천해주세요 🥹
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ㅠ요거 같이 고민좀 해보죠,, 이러면 푸시되어 들어가는 모든 뷰컨에 deinit 관련 동작을 넣어줘야하는데,, 음..
일단 나이브하게 생각해보면 BaseNavigationController에서 pop gesture 액션이 들어오면 노티를 쏘고 노티를 쏠 때 만들어둔 CoordinatorType의 rawValue를 넘겨줘서 해당 rawValue의 Coordinator를 Coordinator 클래스에서 노티 처리해주고 이케저케 하면 될 거 같긴한데 지금 자세히 테스트 해볼 수가 없네요ㅠ
일단은 이대로 가시고 TODO 메모 남겨주시면 제가 나중에 개선해볼게요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
네 저도 우려하셨던 부분이 (이러면 푸시되어 들어가는 모든 뷰컨에 deinit 관련 동작을 넣어줘야하는데) 걱정되서.. 코멘트를 남겨보았어요.
담에 같이 개선해봐요. 저도 추후에 더 고민해볼게요. 답변 감사합니다 🙇🏻♀️
이슈를 만들어 두었었는데, 이걸 close하지 않고 그대로 냅둘게요!!
📕 Issue
fix #22 #23
📙 작업 내역
📘 작업 유형
📋 체크리스트
📱 테스트 방법
📝 리뷰 노트
🏞️ 스크린샷