Skip to content

트러블 슈팅

sustainable-git edited this page Nov 3, 2021 · 9 revisions

트러블 슈팅

무결성

  • 앱을 외부에서 다운받았을 때 무결성을 보장할 수 없는 문제

      1. CodeSquad 그룹에 메일을 통하여 초대수락 하기
      1. Xcode -> Preference 에서 팀을 CodeSquad로 설정
      1. Bundle Identifier를 적당히 설정
      1. Register Device로 연결된 아이폰 설정
      1. 아무앱(스타벅스트 등)이나 빌드하면 비밀번호 입력창 몇 번 뜸
      1. 한글 클락이 실행 됨

info.plist

  • info.plist를 다른 폴더로 이동하였을 경우 생기는 문제

    • Build input file cannot be found : info.plist 경로 오류
    • 해결 방법 : TARGETS -> Build Settings -> Packaging -> Info.plist File 위치 변경
    • [참고 사이트]

시스템 로그

  • 의미 없는 시스템 로그 지우기

      1. Metal API 로그 지우기
      1. 시스템 로그 지우기
      • product > scheme > edit scheme
      • OS_ACTIVITY_MODE = disable

ContentView

  • UITableViewCell에 UISwitch 세팅

    • UITableViewCell에 addSubview(switch)를 하면 UISwitch가 클릭에 반응하지 않음
    • contentView.addSubview(switch)를 해주어야 클릭에 대한 반응이 이루어짐
    • [참고 사이트]

ViewDidLoad()와 의존성 주입

  • Coordinator에서 ViewController를 만든 후, ViewController에 ViewModel을 주입시킨다
  • 하지만, ViewController의 viewDidLoad()가 실행되는 시점과, ViewModel이 주입되는 시점이 명백하게 선후 관계가 정해져 있지 않다
  • 때문에 ViewController의 viewDidLoad()에서 ViewModel에 접근하는 경우에 ViewModel이 주입되지 않으면 nil이 반환된다
  • 따라서 ViewController를 만든 이후에 ViewModel을 주입시키면 문제가 발생할 수 있다
  • convenience init을 이용해 ViewController를 만드는 시점에 ViewModel을 주입하여 viewDidLoad() 이전에 반드시 존재하도록 하였다

RecordingViewController 인스턴스 유지하기

  • 측정이 시작되면 측정 화면과 시작 화면을 자유자재로 변경할 수 있어야 하는데, 기록은 중지되면 안되기 때문에 인스턴스를 유지해야 한다

    • 시작 화면에서 시작 버튼을 누르면 RecordingViewController가 나타나고, 곧바로 기록을 측정을 시작한다
    • 이 RecordingViewController에는 시작 화면의 지도를 다시 보기 위해 다시 돌아가는 버튼이 있다
    • 하지만, 돌아가더라도 측정은 유지되어야 한다
    • 때문에 RecordingViewController 인스턴스를 유지해야 한다
  • Coordinator에서 RecordingViewController를 소유하여 유지하기

    • RecordingViewCoordinator가 생성되면 RecordingViewController를 생성하여 소유한다
    • RecordingViewController를 보여주거나 보여주지 않을 때에는 NavigationController에서 present 혹은 dismiss를 한다
    • 이런 방법을 사용하게 되면 RecordingViewCoordinator에 RecordingViewController 인스턴스가 계속 존재하게 된다
    • 메모리 해제가 필요한 경우에는 RecordingViewCoordinator를 super로 부터 없애주기만 하면 된다
Clone this wiki locally