App crash 관한 문의

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • nobleidea
      참가자
      • 글작성 : 5
      • 답글작성 : 8

      안녕하세요. 고귀한 생각을 가진 개발자 nobleidea입니다.
      유튜브에서 좋은 영상을 보다가 궁금증을 갖게되어 질문드립니다.

      App crash & outlet 관련하여 두가지 궁금한 사항이 있습니다.

      가정) 뷰컨트롤러의 뷰 요소들과 스토리보드 연결시 (outlet으로 연결 시)
      Implicitly unwrapping Optional로 선언되어 있다고 가정

      1. 만약 뷰컨트롤러에서 메모리누수가 발생하게되면 (앱이 버티질 못할정도? – 대용량의 파일 다운로드 등)
        outlet이 weak로 선언되어 있기때문에 메모리가 가득찰 때 해당 outlet이 메모리에서 먼저 해제 되어
        해당 outlet에 접근하면 앱이 죽을 것 같다는 생각을 하게 되었는데요. 이러한 방식으로 진행되는게 맞는건지요 ?
        물론… 메모리 누수가 계속되는게끔 개발은 해선 안된다고 생각합니다만.. 극단적으로 생각했을때.. 궁금했습니다.
      2. 메모리 누수가 지속적으로 발생되어 뷰컨트롤러에 있는 뷰들이 메모리에서 해제되는 경우가 있을까요?
        이 때 뷰들은 weak가 아닙니다만… 위와(1번) 동일하게 로직이 진행되는건지요?

      출처 : https://www.youtube.com/watch?v=rhLffk7ogfs

      소중한 답변에 미리 감사드립니다.
      잘못된 점이 있다면 댓글 주시면 수정하겠습니다.

      감사합니다.

      • 이 게시글은 nobleidea에 의해 4 years, 8 months 전에 수정됐습니다.
    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 579

      위와 같은 가정상황이라면 이미 앱은 죽습니다.

      만일 그렇지 않다고 하더라도 시스템에서 여러방법을 통해 시스템의 메모리가 부족하다는 메시지를 계속 보냅니다.

      애플의 Responding to Memory Warnings 글을 보면 어떤 방법으로 메모리 부족을 경고하는지 알 수 있습니다.
      만약 메모리가 부족할 때 적절한 처리를 해주지 않으면 앱이 죽습니다.
      해당 outlet의 뷰가 알아서 메모리에서 해제되거나 하는 일은 없다고 봅니다.
      또, 메모리 누수로 뷰가 메모리에서 해제되는 경우는 없습니다.

      didReceiveMemoryWarning 등의 메서드를 통해 메모리가 부족하다는 경고를 받으면 메모리를 프로그래머가 비울 수 있는 코드를 실행해야합니다. 그럴때 1번에 말씀하신 것처럼 아웃렛 뷰를 프로그래머가 직접 메모리에서 해제할 수는 있겠지만, 자동으로 시스템에서 임의로 메모리에서 없애진 않습니다.

      • 멍단비
        참가자
        • 글작성 : 10
        • 답글작성 : 98

        image

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

logo landscape small

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