3.0.0
๐ [์์ฝ]
- protocol์ ์ข ๋ ์ธ๋ถํ ํ์ต๋๋ค.
- finish()์ popViewController๋ฅผ ๋ฒ๊ฑฐ๋กญ๊ฒ ๋งค๋ฒ ํธ์ถํด์ผํ๋ ๋ก์ง์ ๋ด๋ถ์ ์ฒ๋ฆฌํ์ต๋๋ค.
- finishํจ์ ํธ์ถ์์ presenter?.popViewController(animated:) ํธ์ถ์ ํ ์ ์๋๋ก ํ์ต๋๋ค.
- ๋ทฐ ์ปจํธ๋กค๋ฌ์์ ๋ช ์์ ์ผ๋ก popViewController๋ฅผ ํธ์ถํ์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด FlowCoordinatorNavigatable ํ๋กํ ์ฝ์ ์ถ๊ฐํ์ต๋๋ค.
- ์์ธ finish(), popViewController๋ฅผ ๋ทฐ์ปจํธ๋กค๋ฌ๋ง๋ค ์ ์ธํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์ ํด๊ฒฐํ์ต๋๋ค.
- ๊ฐ์ ์ธ๋ํ ์ต์ ๋ ์ฐ์ฐ์ ๋์ ์ต์ ๋ ์ฐ์ฐ์๋ก ๋์ฒด.
๐ธ [์์ ๋ด์ฉ]
๊ณ ๋ฏผ1: ๋ง์ฝ ์ฝ๋๋ค์ดํฐ์์ ๋ทฐ ์ปจํธ๋กค๋ฌ ์ธ์คํด์ค๋ฅผ ์ฐธ์กฐํ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ๋ทฐ์ปจํธ๋กค๋ฌ ์ฝ๋ ๋ด๋ถ์ popViewController๋ฅผ ํธ์ถํ๋ scope์ popViewController, finish()๋ฅผ ํธ์ถํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์....
๋๋
์ฝ๋๋ค์ดํฐ์์ ๋งค๋ฒ finish()์ธ ๋ค๋น๊ฒ์ด์ ์ pop ํจ์๋ฅผ ํธ์ถ ์ฝ๋๋ฅผ wrappingํ๋ ํจ์๋ฅผ ์ ์ธํด์ผ ํ๋๊ฒฝ์ฐ...
๋๋ ๋ทฐ์ปจํธ๋กค๋ฌ deinit์์ finish()ํธ์ถํด์ผํ๋ ๊ฒฝ์ฐ
์ฝ๋๋ค์ดํฐ์์ start()๋ด๋ถ์ ์์ฑํ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฝ๋๋ค์ดํฐ ๋ด๋ถ์ ์ฐธ์กฐํ ๊ฒฝ์ฐ, navigationController's popViewController๊ฐ ํธ์ถ๋๋, ํด๋น ๋ทฐ ์ปจํธ๋กค๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ํด์ ๋์ง ์์ต๋๋ค. (๊ทธ ์ด์ ๋ ์๋ ๋์ต๋๋ค.) ๊ทธ๋์ ๋ฐ๋์( ๋ฌผ๋ก ๋ค๋น์คํ, ์ฝ๋๋ค์ดํฐ ์ด์ธ์๋ strong reference์ค์ธ ๊ฐ์ฒด๊ฐ ์๋๊ฒฝ์ฐ ์ ์ธ) popViewControllerํธ์ถ์์ ์ coordinator.finish()๋ฅผ ํธ์ถํด์ strong reference๋ก retatin count๊ฐ 2์ธ ๋ทฐ์ปจํธ๋กค๋ฌ๋ฅผ ํด์ ํด์ผ ํ์์ต๋๋ค.
์ด๋ ์๊ฐํ ๋ฌธ์ ๋... ๋ง์ฝ baseViewController๋ฅผ ํตํด ์ปค์คํ
๋ค๋น๋ฐ๋ฅผ ์์ฑํ๊ณ , ๋ค๋ก๊ฐ๊ธฐ๋ฒํผ์ ์ ์ํ๋ค๋ฉด? ์ด๋ ๋ค๋ก๊ฐ๊ธฐ ์ก์
ํจ๋ค๋ฌ @objc ํจ์๊ฐ private์ด๋ผ๋ฉด? override๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ํ ๋ค๋น๊ฒ์ด์
๋ฐ ๋ฐฑ ๋ฐ ๋ฒํผ์ ์ปค์คํ
์ผ๋ก ๋ถ์ฐฉํ์ง ์๋ ๊ฒฝ์ฐ. ์ฆ ์์คํ
์์ ์๋์ผ๋ก ๋ฐฑ ๋ฐ ๋ฒํผ์ ์์ฑํด์ฃผ๋ ๊ฒฝ์ฐ์
๋๋ค. ์ด๋ ๋๋์ฑ ๊ณค๋ํด์ง๋๋ค. ๋ฌผ๋ก ์ฝ๋๋ค์ดํฐ ๊ฐ์ฒด ์์์ weak var viewController๋ก ๋ทฐ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ค๋ฉด, ์ฝ๋๋ค์ดํฐ ๊ฐ์ฒด์์ ๋ทฐ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ธํ์ง ์๋ ๋๋๊ณผ ๋์ผํ๊ฒ ์ ์ผํ๊ฒ strong reference์ค์ธ ๋ด๋น๊ฒ์ด์
์คํ์์ pop๋๋ฉด (์ธ๋ถ strong ์ฐธ์กฐ์ค์ธ ๊ฐ์ฒด๊ฐ ์์ ๊ฒฝ์ฐ) deinit๊ฐ ํธ์ถ๋์ง๋ง....
๊ฒฐ๋ก ์ ์ผ๋ก ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง, ๊ธฐ์กด FlowCoordinator์์ ์ ์ธํ๋ finish()๋ฅผ ์ ๊ฑฐํ๊ณ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ delegate ํ๋กํ ์ฝ์ ์ ์ธํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ FlowCoordinator์์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ์ค์ํ FlowCoordinatorDelegate ํจ์๋ค์ extension์ผ๋ก ์ ์ํ์ต๋๋ค.
finish()์ ๊ฒฝ์ฐ ์ฝ๋๋ค์ดํฐ์์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฐธ์กฐํ์ง ์๋ ๊ฒฝ์ฐ์
๋๋ค. ์ด ๊ฒฝ์ฐ finish(withAnimated:)๋ฅผ ์ผ๋ค๊ฐ,, ์ด์ ์ด์ ํ๋ฉด์ผ๋ก ๋ณด์ฌ์ง ์ ์์ต๋๋ค.
ํ์ฌ ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ์ฌ๋ผ์ง๋ ์ด ๋ทฐ ์ปจํธ๋กค๋ฌ์ strong reference๊ฐ ํ๋์ผ ๊ฒฝ์ฐ์ finish()ํธ์ถ.
๋ง์ฝ ์ฝ๋๋ค์ดํฐ์์๋ strong reference์ค ์ด 2๊ฐ์ธ ๊ฒฝ์ฐ finish(withAnimated:)ํธ์ถํด์ผํฉ๋๋ค. ๋ฌผ๋ก ์ด ์ด์์ธ ๊ฒฝ์ฐ ๋ทฐ strong reference์ค์ธ ํด๋ก์ ๋ ๊ฐ์ฒด์ nil์ด๋ release๋ฅผ ์์ผ์ผํฉ๋๋ค.
๊ณ ๋ฏผ2: UIWindow๋ฅผ ๋ค๋ฃจ๋ ์ฝ๋๋ค์ดํฐ, viewController๋ฅผ ๋ค๋ฃจ์ง ์๋ ์ฝ๋๋ค์ดํฐ์์, ์ฝ๋๋ค์ดํฐ๋ค์ ๋ค๋ฃจ๋ ์ฝ๋๋ค์ดํฐ ๋ฑ ๋ฌด์กฐ๊ฑด ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ค์ดํฐ์์๋ ํ์์ ์ผ๋ก viewController ์ธ์คํด์ค๋ฅผ ์ ์ธํด์ผ ํ๋๊ฐ????
๊ฐ๋จ ์์ฝ ๊ฒฐ๋ก ์ ๋๋ค: ๋งค๋ฒ ๋ทฐ ์ปจํธ๋กค๋ฌ์ deinit์์ ์ด๋ popVIewController ํธ์ถ sopce์์ coordinator.deinit(), navigationController.popViewController๋ฅผ ํ์ง ์์๋ ๋๋ค.
if-tgํ ios ์ํ์ดํ๊ณผ release1.0.*๏ฟฝ์ FlowCoordinator ํ๋กํ ์ฝ์ผ ๋ ๊ฐ๋ฐ ์ค ๊ฐ์ด ๊ณ ๋ฏผํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
protocol์์ viewController ํ๋กํผํฐ { get }๋ฅผ ์ ์ธํ๋ค๋ฉด ์ ๊ณ ๋ฏผ์ฒ๋ผ ๋ถํ์ํ ํ๋กํผํฐ์ ์ ์ธ์ด ๋ฐ์๋ฉ๋๋ค.....
release 2.0.0์์ viewController ํ๋กํผํฐ๋ฅผ FlowCoordinator์์ ์ ๊ฑฐํ๋ ์ฃผ์ ์ด์ ์ค ํ๋์ ๋๋ค. ๏ฟฝ
์ ์ ์๊ณ ์์๋... viewController์ deinit๊ฐ ํธ์ถ๋์ง ์๋๋ค๋์ ์ ์ฝ๋๋ค์ดํฐ๋ฅผ ๋ฐฐ์ด์ง ์ค๋๋์ ๊ธฐ์ต์ด ๊ฐ๋ฌผ๊ฐ๋ฌผํ์ง๋ง, ์ต๊ทผ์ ๋ค์ ์ฝ๋๋ค์ดํฐ๋ฅผ ๋ค๋ฃจ๋ฉฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์ ์๋ฒฝํ๊ฒ ๋ ์ฌ๋ ธ๊ณ ํ๋จ์์ ์ค๋ช ๋ฉ๋๋ค.
๊ฒฐ๊ตญ ์ ๊ฑฐํ์ง๋ง ์ ์ผ ์ฃผ์ํ๋ finish()์ popViewController๋ฅผ ๋งค๋ฒ ํธ์ถํด์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ ํด๊ฒฐํ๋ ์ด๋ฒ ๋ฆฌ๋น๋ฉ ๊ณผ์ ์์ ๋ค์ ์ถ๊ฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ ์ ๊ฑฐํ์ต๋๋ค. ใ ใ ........ ๊ฒฐ๊ตญ protocol๋ด๋ถ์ ์ฌ์ฉ๋์ง ์๋.. ๋ถํ์ํ ํ๋กํผํฐ ์ ์ธ์ด๋ ํจ์๋ ๋ถํดํ๋๊ฒ ์ข์ ์๋ ์๋ค๊ณ ๋ฐฐ์ ๋ ๊ฒฝํ์ ์ด ๋ ์ฌ๋๊ณ ํ๋กํ ์ฝ์ ๋ ์ธ๋ถํ ํ์ต๋๋ค +_+
์ด๋ฆํ์ฌ!!!!!!!!
FlowCoordinatorNavigatable protocol!!
์ฝ๋๋ค์ดํฐ๊ฐ finish()๋์ผํ๋ ๊ฒฝ์ฐ๋ ์ฝ๋๋ค์ดํฐ๋ฅผ start()ํ๋ viewController๊ฐ ํ๋ฉด์์ ๋์ด์ ๋ณด์ฌ์ง์ง ์์๋๋ ๋ฉ์ธ ์์ ์ค ํ๋์ ๋๋ค. ๊ทธ๋ฌ๊ธฐ์ ์์์ ์ธ๊ธํ๋ฏ,, ๋งค๋ฒ finish(), popVIewController๋ฅผ viewController ๊ฐ์ฒด์์ ํธ์ถํด์ผํ์ต๋๋ค.....
๊ฐ๋ฐ์ด ๋ฐ๋ป์ ๊ณ์ ๋ฏธ๋ฃจ๋ค ์ค๋ ์๊ฐ๋ด์ coordiantor ๊ฐ์ฒด ๋ด๋ถ์์ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋ก์ง์ ๊ฐํธํ๊ณ ๊ณ ๋ฏผ2๋ฅผ ํด๊ฒฐํด์ค ์ ์๋ key๋ผ ์๊ฐ๋์ FlowCoordinatorNavigatable์ ์ถ๊ฐํ์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ณตํต์ ์ผ๋ก ๋ฐ์๋๋ ์ฝ๋๋ฅผ protocol Extension์ผ๋ก ์ฒ๋ฆฌํด๊ธฐ ์ํ ๊ณ ๋ฏผ์ ํ๊ณ , ์ด์์ค์ ๋ค๋น๊ฒ์ด์ ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ pop๋ ๋ pop์ค์ธ ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ! transitionCoordinator?.viewController(forKey: .form)์ด ํด๋น ์ฝ๋๋ค์ดํฐ์์ ๋ค๋ฃจ์๋ ๋ทฐ์ปจํธ๋กค๋ฌ์ธ์ง ๋ฉํํ์ ์ ๋น๊ตํ๊ฑฐ๋, strong reference์ค์ธ ์ฃผ์๊ฐ์ ๋น๊ตํด์ผ๋ง ํ์ต๋๋ค.
๊ทธ ๋ก์ง์ด FlowCoordinator extension์ ์กด์ฌํ์ด์ผํ์ง๋ง, ์ด๋ฅผ์ํด์ ๋ทฐ ์ปจํธ๋กค๋ฌ ์ธ์คํด์ค๋ก ์ฐธ์กฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ณ ๋ฏผ1์ด ๊ฒน์ณค์์ ๋ ์ฝ๋๋ค์ดํฐ์์ ๋ค๋ฃจ๋ ์ฃผ์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ปดํ๋ฆฌ์ ์ผ๋ก ๊ตฌํํ๋๊ฒ ์ด๋จ์ง ๊ณ ๋ฏผํ์๊ณ ...
ํด๋ก์ ์ถ๊ฐ ํ
์ด๋ ๊ฒ ์ค์ ์ฝ๋๋ค์ดํฐ ์์ฑ์์ ์ ์ฝ๋๋ค์ดํฐ์์ ๋ค๋ฃจ๋ ์ฃผ์ ๋ทฐ์ปจํธ๋กค๋ฌ ๊ตฌ์ฒดํ์ ์ ๋น๊ตํด์ฃผ๋ ๋ก์ง์ ์์ฑ๋ ํด๋ดค์ต๋๋ค.
(๋น๊ต)
๋๋ type(of:)๋ฅผ ์จ์ ๋น๊ต๋ ํด๋ดค์ง๋ง ๊ฒฐ๊ตญ ์ต๊ณ ๋ก ์ฌ์ด ๊ฒฝ์ฐ๋ ํ๋กํ ์ฝ์์ viewController๋ฅผ ํ๋กํผํฐ๋ก ์ ์ธํด ์ฝ๋๋ค์ดํฐ๊ฐ ๊ด๋ฆฌํ๋ ๋ทฐ์ปจํธ๋กค๋ฌ์ ์ฃผ์๊ฐ์ ๋น๊ตํด ๋ช ํํ๊ฒ ๋ทฐ์ปจํธ๋กค๋ฌ๊ฐ pop๋ ๋ ํด๋น ๋ทฐ๊ฐ ์ฝ๋๋ค์ดํฐ์ ๋ทฐ์ธ์ง ํ๋ณํ๊ธฐ๊ฐ ์ฌ์ ์ต๋๋ค... ๊ทธ๋ฌ๋ ๊ณ ๋ฏผ1๋ก ์ธํด ๊ฒฐ๊ตญ ์๋กญ๊ฒ ํ๋กํ ์ฝ์ ์ธ๋ถํํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ทฐ ์ปจํธ๋กค๋ฌ๋ก ์ธํด ์ป์ ์ ๋ค๋ฃฐ ์ ์๋ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋์ธ UINavigationControllerDelegate ํ๋กํ ์ฝ์์ pop๋ ๋ ๊ด๋ จ ๋ค๋น๊ฒ์ด์ ํจ์ ํธ์ถ์์ ์ finish()๋ฅผ ํธ์ถํด์ฃผ๋ ์ฝ๋ ๋ํ viewController ํ๋กํผํฐ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํด ์ค ์ ์์์ต๋๋ค.
์ค๋ช ์ด ๊ธธ์ด์ ธ ๊ด๋ จ ์ฌ์ฉ ์์๋
SHCoordinatorExample -> Source -> Feature -> SubCoordinator์ ์ฝ๋๋ก ์์ฑํ์ต๋๋ค.
โจ[๋ฐ์ํ๋ ์ด์ ์ด์ release 2.0.0 ๋น์ ๋ฌธ์ : FlowCoordinator protocol์ ๏ฟฝ viewController: UIViewController๋ฅผ ๋ฌ์ผ ํ๋๊ฐ?]
์๋๋ release 2.0.0 ์ผ ๋ ์ฝ๋์ ๋๋ค.
protocol FlowCoordinator {
...
var viewController: UIViewController { get }
...
}
ACoordinator: FlowCoordinator {
...
let viewController: UIViewController
....
}
viewController๋ฅผ FlowCoordinator ํ๋กํผํฐ๋ก ์ ์ธํ์ง ์์๋ FlowCoordinator๋ฅผ ์ค์ํ๋ ๊ฐ์ฒด์์๋ persenter(UINavigationController)๊ฐ ์์ต๋๋ค., presenter.viewControllers.last๋ฅผ ํตํด ์ฝ๋๋ค์ดํฐ๊ฐ ๋ค๋ฃจ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ป์ด์ฌ ์ ์์์ต๋๋ค. ๊ทธ๋์ ๊ผญ ์ฝ๋๋ค์ดํฐ ๊ตฌํ์ฒด์์ viewController๋ฅผ ์ถ๊ฐํด๋ ๋์ง ์์ง๋ง, protocol ์ค์๋ฅผ ํ๊ฒ๋ ์ด์, @objc๋ก ์ต์ ๋ํ์ ์ผ๋ก ์ ์ธํ์ง ์๋ ์ด์ ๋ช ์์ ์ผ๋ก viewController๋ฅผ ๊ตฌ์ฒดํ์ ์ ์ ์ธํด์ผํ์ต๋๋ค.
์ฝ๋๋ค์ดํฐ ๊ฐ์ฒด์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ์ธํ์ ๋, ์ฅ ๋จ์ ์ด ์กด์ฌํ์ต๋๋ค.
- ์ฅ์ ์ viewController ์ธ์คํด์ค๊ฐ ์ฝ๋๋ค์ดํฐ์์ ๋ง์ด ํ์ฉ๋๋ค๋ฉด ์ ๋ง ์ฝ๊ฒ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋จ์ ์ ๋ทฐ์ปจ ์ ์ธ์ 'weak ' ํค์๋๋ก ํ์ง ์๋๋ค๋ฉด? strong reference๊ฐ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด ์์ ์ฝ๋๋ค์ดํฐ ๊ฐ์ฒด๋ ํด๋น ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ completion handler, combine๋ฑ ํด๋ก์ ๋ฅผ ํตํด ์ฐธ์กฐํ๊ณ ์์ง ์๋๋ค๋ฉด ๋ค๋น๊ฒ์ด์ ์คํ์์ pop๋ ๋, ํด๋น ์ฝ๋๋ค์ดํฐ ๊ฐ์ฒด.finish()๋ฅผ ํธ์ถํจ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ deinitํ ์ ์์ต๋๋ค. (๋ฌผ๋ก ์ด ๊ฐ์ ์ ๋ทฐ์ปจํธ๋กค๋ฌ๋ฅผ ๋ค๋น๊ฒ์ด์ ์คํ, ์ฝ๋๋ค์ดํฐ ๊ฐ์ฒด ์ ํ๋กํผํฐ ์ด 2๊ฐ์ strong reference๊ฐ ๋ฐ์๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ทธ ์ธ์ ์์์ ์ธ๊ธํ ์บก์ณ ํ์์ผ๋ก ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ๋ viewController๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ release ๋์ง ์์์ ์๊ณ , memory leak๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.)
ACoordinaotr.start() // AViewController ์์ฑ ํ ์คํ. ์ด๋ AViewController๊ฐ pop๋ ๋ ๋ ์ด์ ACoordiantor ์ธ์คํด์ค๋ ์ ์ง๋ ์ด์ ๊ฐ ์๋ค๋ฉด, ๋ฉ๋ชจ๋ฆฌ๋ก๋ถํฐ ํด์ ํด์ผ ํ์ง๋ง, ํด์ ํ๊ธฐ ์ํ ํจ์ finish()๋ฅผ ๋ฐ๋์ ํธ์ถํด์ผํ๊ณ , ์ผ๋ฐ์ ์ผ๋ก๋ AViewController ๋ด์์ popViewController(animated:)๋ฅผ ํธ์ถ์ํค๋ scope๋ด์์ ์์ ์ ๋ค๋ฃจ๋ ์ฝ๋๋ค์ดํฐ์ finish() ๋ํ ํธ์ถํด์ผ ํ์์ต๋๋ค. (์๋ชปํ๋ฉด ๊น๋นกํจ..)
์ด๋๋ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์ฒซ ๊ฒฝ์ฐ
release 2.0.0๊ธฐ์ค์ผ๋ก ์ฝ๋๋ค์ดํฐ ๊ฐ์ฒด์์ start()๋ด๋ถ์ ์์ฑํ ๋ทฐ ์ปจํธ๋กค๋ฌ์ ์ธ์คํด์ค๋ฅผ ํ๋กํผํฐ๋ก strong referenceํ์ง ์๋ ๊ฒฝ์ฐ. ์ฆ ๋ค๋น๊ฒ์ด์ ์คํ์์ ์ ์ผํ๊ฒ ํด๋น ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ strong referenceํ ๋
popViewController๊ฐ ํธ์ถ๋ ๋, ์ด scope์์ coordinator.finish()ํธ์ถํด๋ ๋๊ณ ,
์๋๋ฉด ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ strong reference๋ก ์ฐธ์กฐํ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ๋ค๋น๊ฒ์ด์ ์คํ ํ๋๋ฟ์ด๋ฏ๋ก
deinit์์ ์ coordinaotr.finish()๋ฅผ ์ ์ธํด๋ ๋ฉ๋๋ค.
๋๋ฒ์งธ ๊ฒฝ์ฐ
์ฝ๋๋ค์ดํฐ ๊ฐ์ฒด์์ ์ฝ๋๋ค์ดํฐ๊ฐ์ฒด.start() ๋ด๋ถ์ ์์ฑํ ๋ทฐ ์ปจํธ๋กค๋ฌ ์ธ์คํด์ค๋ฅผ ํด๋น ์ฝ๋๋ค์ดํฐ์์ ์ธ์คํด์ค๋ก ๋ณด์ ์ค์ผ ๋
์ด๋ popViewController๊ฐ ํธ์ถ๋๋ ์์ ์์, ์ด scope์์ coordinaotr.finish()๋ฅผ ํธ์ถํด์ผํฉ๋๋ค.
๋ฌผ๋ก ์ด๋ง์ ๋ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ strong reference์ค์ผ ๊ฒฝ์ฐ์, ๋ทฐ ์ปจํธ๋กค๋ฌ๋ ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋์ด์์ด leak๊ฐ ๋ฐ์๋ฉ๋๋ค. ( ๊ด๋ จ ์์ ํฌ์คํธ ๋งํฌ )
์์์๋ถํฐ ๊ณ์ ์ธ๊ธํด์๋ ๋ฌธ์ ๋ฅผ ์ต์ํ ํ๊ธฐ์ํด ๊ฒฐ๊ตญ ๋ค๋น๊ฒ์ด์ ๋ธ๋ฆฌ๊ฒ์ดํธ๋ฅผ ๋ค์ ํ์ฉํ๊ฒ ๋์์ต๋๋ค.