2013-04-22 5 views
0

언로드 : SecondViewController후 사용 약 15 ~ 20 배

에 엑스 코드 4.6 스토리 보드 ARC 모델 SEGUE을 나는 새 veiwController 때로드 주의 ViewController이있는 응용 프로그램을 가지고 장치가 오른쪽으로 회전합니다. 앱이 시작되면 모든 것이 효과적입니다. 기기를 회전시킨 다음 secondview 컨트롤러를 언로드하는 백, 약 15-20 배의 앱은 매우 슬ish습니다. 축소 된 뷰 컨트롤러가로드되고 장치를 수년간 번갈아 사용할 때만 발생하는 것으로 좁혀졌습니다. 나는 또한 그것이 메모리 문제라는 것을 좁혔다. 사용하고 사용 가능한 메모리를 추적하는 앱을 설치했습니다. 내 기억 장치는 여러 번 회전 할 때 400MB에서 900MB로 사용됩니다. 내가 할 수있는 한 많은 정보를 제공하려고 노력 중이다. 각보기에는 매초마다 발사하는 8 개의 NSTimer가 있습니다.

프로그래밍 방식으로보기를 언로드하여 언로드 중인지 확인하는 방법이 있습니까?

`- (무효) SetView : 절대 좌표 :

나는 로딩 및 언 로딩 보장하기 위해이 코드를 포함 시켰습니다 (UIView의 *) aView { NSLog (@ ">>>는 입력 %의 < < <"를, PRETTY_FUNCTION);

if (!aView)   // view is being set to nil 
{ 
    NSLog(@"Should be unloading now"); 
} 

[super setView:aView]; 

NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); 

}

로그 결과 : 2013년 4월 22일 16 : 42 : 03.588 XXXXXXXX [XXXXXXX] >>> 입력하기 - [GraphViewController SetView : 절대 좌표] < < < 2013년 4월 22일 16 : 42 : 03.589 XXXXXXXX [XXXXXXX] < < < 떠나 - [GraphViewController setView : 절대 좌표] >>>

` 나는이 문제를 해결하려면보고 할 필요가 무엇인지 모르겠습니다.

오른쪽 방향의 모든 "점"을 매우 높이 평가할 것입니다.

감사

답변

2

당신은 당신이 SecondViewController을 "언로드"방법에 대한 많은 정보를 제공하지 않았습니다. 너는 그것도 모달로하고 있니? 그렇다면 문제는 - 당신이 segue를 할 때마다 새로운 뷰 컨트롤러를 인스턴스화합니다. 모달 섹터 인 경우, 제시된 컨트롤러는 제시하는 컨트롤러에 대한 강력한 포인터를 가지므로이 컨트롤러 중 아무 것도 할당 해제되지 않습니다 네가 앞뒤로 가면서.

일반적으로 긴장을 푸는 것 외에는 아무것도 사용하지 말고 스토리 보드에서 뒤로 이동해서는 안됩니다. 따라서 문제를 풀기 위해 Seague를 사용하면 SecondViewController에서 MainViewController로 돌아갑니다. 실제로 MainViewController의 인스턴스로 돌아가고 SecondViewController는 할당 해제됩니다. 긴장을 풀 수있는 방법을 모르는 경우 어떻게 대답할지 편집 해 보겠습니다. 편집 후

:

는 언 와인드 segues하려면 두 가지 작업을 수행. 다시 돌아갈 컨트롤러에서 메서드를 추가합니다. 두 가지 중요한 점은 IBAction이되고 UIStoryboardSegue *에 입력되는 단일 인수가 있다는 것입니다.여러분이 호출하는 것이 중요하지 않으며, 내부에 코드가있을 필요도 없습니다. 일반적으로 호출문이 있는지 확인하기 위해 로그 문을 사용합니다. 그런 다음 UI에서 버튼이나 표보기 셀과 같은 UI 요소 (또는 코드에서 실행하려는 경우 컨트롤러 자체)에서 끌기를 제어하고 화면의 녹색 Exit 아이콘 장면 하단 - UI 요소에서 컨트롤러 사이가 아닌 동일한 컨트롤러의 종료 아이콘으로 드래그하는 것이 중요합니다. 이탈 아이콘 위로 끌기를 놓으면 위에서 언급 한 서명으로 만든 메소드가 표시됩니다. 원하는 것을 선택하십시오. 소스 컨트롤러에서 prepareForSegue를 구현하면 다른 섹터와 마찬가지로 정보를 대상 컨트롤러로 다시 전달할 수 있습니다.

+0

감사합니다. 나는 거슬러 올라가는 것에 대해 몰랐다. 나는 긴장을 풀고 경험이 없다. 당신이 훌륭한 샘플을 가지고 있다면. 다시 감사합니다!! – Eric

+0

두 번째 viewcontroller로드/언 마운트하는 데 사용되는 UI 요소가 없습니다. 아래 코드를 사용하고 있습니다. – Eric

+0

@ Eric, 내가 말했듯이, 컨트롤러 자체에서 (그 하단 막대의 아이콘) 출구 아이콘으로 끌고옵니다. 이 경우 코드에서 사용할 수 있도록 식별자에 식별자를 지정해야합니다. – rdelmar