상황서버에서 내려주는 HTML text를 UILabel로 적용하기 위해 아래와 같이 변환하려 함 let attributedString = try? NSMutableAttributedString(data: data, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil)디버그 시 크래시 발생에러 메세지Thread 1: EXC_BREAKPOINT (code=1, subcode=0x1aef22a18)ㅌ해결 방법Malloc Stack Logging을 꺼주자. 이유NSMutableAttributedString 변환 시 WebKit인가를..
에러 메세지아래와 같은 크래시 리포트가 올라왔다.Fatal Exception: NSInternalInconsistencyExceptionMutating a priority from required to not on an installed constraint (or vice-versa) is not supported. You passed priority 750 and the existing priority was 1000.iOS 12, iPadOS 12 에서만 발생하고 있었음 원인아래 오류 설명을 보면 이미 설치된 constraint의 우선순위(priority)를 바꿀 수 없다고한다Fatal Exception: NSInternalInconsistencyExceptionMutating a priority f..
목차MVVM디자인 패러다임Varities of Typesstructclass"dont care" type (aka geneics)protocolenumfunctionsBack to the Demo!Apply MVVM to Memorize Summary이번 강의에서는 MVVM 아키텍처와 Swift 타입 시스템의 기초를 다루며, 메모리 앱의 게임 로직을 구현하는 방법을 소개합니다.Highlights🏛️ MVVM 아키텍처: 데이터와 UI를 분리하여 효율적인 앱 개발을 지원합니다.💻 Swift 타입 시스템: Struct, Class, Protocol 등 다양한 타입을 사용하여 데이터 구조를 정의합니다.🎮 메모리 앱 로직: 카드 클릭 시 발생하는 이벤트와 상태 변화를 모델에 통합합니다.🔒 모델 보호: U..
setUp(), tearDown()클래스 메서드 : 한번만 실행됨인스턴스 메서드: 메서드마다 실행 됨 위처럼 클래스 setUp, tearDown 메서드는 전체 테스트에 한번만 실행되는걸 확인 할 수 있다. 위 코드에서 classInstanceCounter는 테스트메서드의 수만큼 실행되므로 테스트가 끝나면 2가 된다. tearDown(): 클래스에 한번, 테스트가 종료되면 불림tearDownWithError(): 모든 테스트메서드에 불림, 테스트메서드가 3개이면 3번 불림addTearDownBlock(): 이걸 정의한 테스트메서드가 종료되면 불림, tearDownWithError() 이전에 불림아래 순서대로 불린다.
딥링크로 앱 진입시에 크래시 나는 현상이 있었다.백그라운드에서 앱이 실행 중일 땐 딥링크 진입 시 크래시가 나지 않았지만, 앱 종료 후 진입 시 크래시가 나는 이슈였다.딥링크로 진입하는 화면에서 사용하는 모델의 초기화 로직 중 SessionInfo에서 값을 세팅해주는 로직이 있는데, 앱 종료 후 딥링크로 화면 진입 시 세션인포가 세팅되기 전 호출되어 발생하는 nil 에러였다. 따라서 해당 화면의 모델 변수 정의 로직을 lazy var로 수정하여 지연호출하도록 수정했다. // 딥링크로 소개 화면 진입 시 크래시 대응 (앱종료 후 진입시에 발생) - MyAIInvestPlanInputModel 초기화 로직 중 세션인포가 세팅되기 전 가져와서 nil 에러 남, 따라서 초기화 지연시킴 lazy var model..