내 질문은 매우 과학적으로 보일 수 있지만 일반적인 문제라고 생각하며 숙련 된 개발자와 프로그래머는 제목에서 언급 한 문제를 피하기 위해 조언을 줄 것입니다. Btw., 아래에 설명하는 것은 iOS 프로젝트에서 적극적으로 해결하려고하는 실제 문제이며 모든 비용을 피하고 싶습니다.
유한 상태 머신으로 나는 이것을 의미합니다.> 몇 개의 버튼이있는 UI, 해당 UI와 관련된 여러 세션 상태 및이 UI가 나타내는 것, UI에 부분적으로 표시되는 값이 있으며 외부 트리거를 수신하고 처리합니다. (센서의 콜백으로 표시). UI와 응용 프로그램에서 바람직하고 허용 가능한 관련 시나리오를 더 잘 매핑하기 위해 상태 다이어그램을 만들었습니다. 코드를 천천히 구현함에 따라 앱은 점점 더 동작을 시작합니다. 그러나 나는 그것이 충분히 견고하다고 확신하지 않습니다. 내 의심은 내 생각과 이행 과정을 지켜 보는 데서 나옵니다. 나는 모든 것을 다루었다고 확신했지만 UI에서 약간의 테스트를 수행하기에 충분했으며 동작에 여전히 틈이 있음을 빨리 깨달았습니다. 하나, 각 구성 요소는 다른 구성 요소의 입력, 사용자 또는 일부 외부 소스의 특정 입력에서 이벤트 체인, 상태 변경 등의 입력에 따라 달라지고 작동합니다. 여러 구성 요소가 있으며 각각 입력에서 수신 된 트리거-> 트리거 및 보낸 사람 분석-> 분석을 기반으로 무언가 (메시지, 상태 변경) 출력
문제는 이것이 완전히 자체 포함되어 있지 않으며 내 구성 요소 (데이터베이스 항목, 세션 상태, 일부 버튼 상태) ... 이벤트 체인 범위 밖에서 변경, 영향, 삭제 또는 수정 될 수 있다는 것입니다. 바람직한 시나리오. (휴대 전화가 갑자기 꺼지고 배터리가 갑자기 방전 됨) 시스템에 잘못된 상황이 생겨 시스템을 복구 할 수없는 상태가 될 수 있습니다. 애플 스토어에있는 많은 경쟁사 앱에서이 문제 (사람들이이 문제를 깨닫지 못하는 것 같음)를보고 고객이 다음과 같은 글을 쓴다> "세 개의 문서를 추가했는데 거기로 가면 열 수 없습니다. "보이더라도." 또는 "매일 비디오를 녹화했지만 너무 로그 비디오를 녹화 한 후에는 자막을 켤 수 없습니다. 자막 버튼이 작동하지 않습니다."
이것들은 단지 단축 된 예이며, 고객은 종종 더 자세하게 설명합니다.. 설명 및 설명에서 특정 앱에는 FSM 고장이 있다고 가정합니다.
따라서 궁극적 인 질문은 어떻게 이것을 피할 수 있으며 시스템 자체를 차단하지 않는 방법입니다.
편집> 전화에서 하나의 viewcontroller보기의 맥락에서 이야기하고 있습니다. 응용 프로그램의 한 부분을 의미합니다. MVC 패턴을 이해하고 고유 한 기능을위한 별도의 모듈이 있습니다. 설명하는 모든 것은 UI의 하나의 캔버스와 관련이 있습니다.