2014-04-09 1 views
0

여기서 올바른 용어를 사용하고 있는지 잘 모르겠지만 다른 사람이 도울 수 있기를 바라고 있습니다. iOS Dev에 익숙하지 않고 문제가 발생했습니다. :사용자 지정 ViewController 개체가보기 변경 내용을 통해 유지되지 않음

개체를 저장하는 데 사용되는 사용자 지정 클래스를 만들었습니다. 객체와 마찬가지로 많은 속성과 함수가 있습니다. 이 객체는 내 VieController의 .h 파일에서 선언되고 초기화되고 ViewController 전체에서 사용됩니다. 이 객체는 테스트에 대한 많은 정보를 보유하고 있으며 다양한 스레드에서 측정을 수행합니다.

내가 직면 한 문제는 다른보기 (메뉴의 ECSlidingViewController 사용)를로드 한 다음 개체가있는보기로 돌아올 때 개체를 잊어 버린 것 같습니다. 스레드에서 실행중인 작업은 모두 계속 실행 중이지만 해당 개체의 인스턴스는 사라진 것처럼 보입니다.

보기를 변경할 때 개체의 인스턴스를 보존하여 적절한보기로 돌아올 때 개체가 여전히 나타나고 여전히 사용할 수 있도록 할 수 있습니까?

감사합니다.

+0

개체가 강하다고 선언되어 실제로 해당 컨트롤러의 동일한 인스턴스로 돌아가는 경우 "잊어서는 안됩니다." 다시 같은 컨트롤러로 돌아가거나 새로운 인스턴스를 인스턴스화할까요? 해당 컨트롤러의 viewDidLoad 메서드에 로그를 기록한 다음 해당 뷰로 돌아 왔을 때 다시 호출되는지 확인합니다. – rdelmar

+0

코드 공유! – CrimsonChris

+0

@rdelmar - 정말 고마워요! 나는 그것이 당신이 의심했던 것과 똑같이 테스트했습니다. menuViewController는 매번 뷰를 다시 생성하도록 설정되었습니다. [this] (https://github.com/ECSlidingViewController/ECSlidingViewController/issues/28)을 구현했으며 이제는 완벽하게 작동합니다. 정말 고마워! – Unieklee

답변

0

ECSlidingViewController를 구현하고있는 내 menuViewController가 메뉴에서 항목을 선택할 때마다 개체가 포함 된보기를 다시 만들었습니다. 감사합니다 @rdelmar 이것을 지적하십시오!

개체가 지속되었지만 메뉴에서 선택할 때마다 대체 된 viewController에서 개체에 도달 할 수 없습니다.

단순히 간단히 this을 구현했으며 viewController에 대한 참조가 변경 가능한 사전에 저장되고 뷰를 다시 작성하지 않고 단순히 필요할 때 호출됩니다. 이는 viewController가 재사용되고 객체가 그 객체와 함께 유지된다는 것을 의미합니다.

0

개체 참조를 관리자 또는 디자인에 따라 적절하다고 생각되는 다른 클래스와 같은 무언가의 클래스에 넣는 것이 좋습니다. 그리고 가장 중요한 것은 완전히 확실한 클래스 여야합니다. 보기 컨트롤러는 일반적으로 한 뷰 컨트롤러에서 다른 컨트롤러로 변경할 때 해제되거나 다시 생성되지 않습니다. 주 논리를 관리하는 싱글 톤 인스턴스가 좋은 옵션 일 수 있습니다.

관련 문제