RIBs 구현 중 Leak 문제가 계속 생깁니다…

태그: 

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • odyflame
      참가자
      • 글작성 : 17
      • 답글작성 : 21

      안녕하세요!
      회사 내에서 RIBs를 적용해보고 있는 신입개발자입니다..

      다름이 아니라 RIBs를 쓰는데 계속 leak detector가 leak이 된다고 에러가 나네요

      상황은 하나의 RIB에서 자식 RIB을 attach 한다음 navigationView.pushViewController 로 네비게이션 push를 하였습니다.

      그 다음 navigation back button을 누르면 자식 RIB을 detach를 하고 popViewController 상황입니다. 

      여기서 pop은 잘 되서 원래 RIB으로는 돌아오는데 leak detector가 계속 leak이라고 하네요.. 차이점은 detach하고 나서 다른 RIB로 attach를 하지 않아서 그런지, currentChild가 nil이 되어서 그런지 그걸 잘 모르겟어요

      혹시 RIBs를 사용해 보신 분 중에서 어떻게 하는지 아시는 분 계실까요?? 

      혹시 몰라 예제 코드를 첨부합니다

      func goToMusic() {
      
              detachCurrentChildWithView()
      
              routeToMusic()
      
          }
      
          func dismissMusic() {
      
              detachCurrentChildWithView()
      
          }
      
          private func routeToMusic() {
      
              let MusicRIB = musicBuilder.build(withListener: interactor)
      
              self.currentChild = MusicRIB
      
              attachChild(MusicRIB)
      
              viewController.pushViewController(viewController: MusicRIB.viewControllable)
      
          }
      
          private func detachCurrentChild() {
      
              if let currentChild = currentChild {
      
                  detachChild(currentChild)
      
                  self.currentChild = nil
      
              }
      
          }
      
          private func detachCurrentChildWithView() {
      
              if let currentChild = currentChild {
      
                  detachChild(currentChild)
      
                  viewController.popViewController()
      
                  self.currentChild = nil
      
              }
      
          }
      
      private let musicBuilder: MusicRIBBuildable
      
      private var currentChild: ViewableRouting?
      
      

      위의 코드에서 자식 RIB을 detach하기 위해 dismissMusic함수를 호출하면, dismiss는 잘 되는데 그 이후에 오류가 떠서 문제인데 제생각에는 leak이 날 경우가 없는데 이를 어찌 하면 좋을지 모르겟네요

      • 이 게시글은 odyflame에 의해 3 years, 8 months 전에 수정됐습니다.
      • 이 게시글은 odyflame에 의해 3 years, 8 months 전에 수정됐습니다.
    • cooo002
      참가자
      • 글작성 : 0
      • 답글작성 : 1

      저도 현재 사내 서비스를 RIBs로 리팩토링하고 있는데 작성자 님과 같은 이슈가 발생하네요.

      혹시 해결하셨다면 어떤 식으로 해결하였는지 알려줄 수 있을까요??

1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom