2012-10-22 2 views
0

NavigationController과 함께 스토리 보드에 UIViewControllers 두 개가 있습니다.두 번째 UIViewController에서 UIImageView 설정

카메라에 액세스하여 ViewController1에서 사진을 찍습니다. ViewController2로 전환하고 캡처 한 그림을 UIImageView에 표시하고 싶습니다.

ViewController2 H 파일

@interface ViewController2 : UIViewController 

{ 

-IBOutlet UIImageView *matchImage; 

} 

-(IBAction)restart:(id)sender; 

@property (retain, nonatomic) UIImageView *matchImage; 

@end 

ViewController1 M 파일

후 나는 다음과 같은 구문

ViewController2 *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2"]; 

[self.navigationController pushViewController:vc animated:YES]; 

[vc.matchImage setImage:tempImage]; 

첫 번째를 사용하여보기를 전환하려고 사진을 촬영하려면 코드 시간이 내가 완벽하게 잘 작동 사진을 찍을 그리고 난 메신저를 참조하십시오 ViewController2의 나이. 나는 다음과 같은 구문

ViewController2 M 파일 ViewController2에 백 버튼이 그러나

-(IBAction)restart:(id)sender 

{ 

    ViewController1 *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController1"]; 

    [self.navigationController pushViewController:vc animated:YES]; 

} 

이 성공적으로 ViewController1에 반환하고 다시 사진을 촬영하고를 반복 할 수 있어요 방법. 하지만 약 3-4 번 프로세스를 반복 한 후받은 메모리 경고 및 응용 프로그램 충돌이 발생합니다. Xcode에서 분석기를 실행해도 아무런 문제가 없습니다.

내가 그럼 난 (문제없이 50 세 이상) 끝없는 캡처를 수행 할 수있는 다음 줄

[vc.matchImage setImage:tempImage]; 

을 주석 그러나 물론 ViewController2이 (가 비어) 이미지를 표시하지 않는 경우. 그래서 이것은 matchImage를 해제해야한다고 믿게 만들었습니다 (특히 retain 속성이있는 속성이기 때문에). 그러나 이것은 도움이되지 않았다. 어떤 도움이라도 대단히 감사하겠습니다. 나는 여전히 메모리 관리에 대해 배우고있다.

UPDATE 여기

이 디버거 출력되는 뷰의 전환 3 위로의 반복 왕복 후, 조금 더 많은 정보이다. 두 개의 ViewController viewDidUnload 및 didReceiveMemoryWarning 메소드에 NSLog 문을 넣었습니다. 따라서 Received 메모리 경고가 발생하면 2 개의 ViewController 중 3 개의 "인스턴스"가 언로드됩니다. 그래서 그것은 viewcontrollers 사이에 전환하는 각 반복에 대한 새로운 사본을 받고 나타납니다. 이것이 당신이 기대하는 것입니까?

2012-10-22 08 : 23 : 32.008 TestApp [787 : 707]받은 메모리 경고. 23 :

2012년 10월 22일 08

TestApp가 32.015 [787 : 707] viewDidUnload ViewController1 : 0xfd52250

2012년 10월 22일 08 : 23 : 32.017 TestApp가 [787 : 707] didReceiveMemoryWarning ViewController1 : 0xfd52250

23 : 08

2012년 10월 22일 TestApp가 32.023 [787 : 707] viewDidUnload ViewController2

2012년 10월 22일 8시 23분 32초.025 TestApp가 [787 : 707] didReceiveMemoryWarning ViewController2

2012년 10월 22일 08 : 23 : 32 028 TestApp가 [787 : 707] viewDidUnload ViewController1 : 0x16dc30

2012년 10월 22일 08 : 23 : 32.030 TestApp가 [787 : 707] didReceiveMemoryWarning ViewController1 : 0x16dc30

2012년 10월 22일 08 : 23 : 32 033 TestApp가 [787 : 707] viewDidUnload ViewController2

2012년 10월 22일 08 : 23 : 32 037 TestApp가 [787 : 707] didReceiveMemoryWarning ViewController2

2012- 10-22 08 : 23 : 32 040 TestApp가 [787 : 707] viewDidUnload ViewController1 : 0x171de0

2012년 10월 22일 08 : 23 : 32 042 TestApp가 [787 : 707] didReceiveMemoryWarning ViewController1 : 0x171de0

2012-10- 22 08 : 23 : 32,044 TestApp가 [787 : 707] didReceiveMemoryWarning ViewController2

2012년 10월 22일 08 : 23 : 32 046 TestApp가가 [787 : 707] didReceiveMemoryWarning ViewController1가 : 당신이 당신의 restart에 0xfd87580

+1

대신 유지하고 그 – user427969

+0

를 작동하는 경우도 tempImage' UIImage'''와 같은 하나 개의 속성을 만들려고하고 속성 및 viewWillApper'에서 할당을 참조 강한 시도 name_'이 –

+0

잘 작동 할 수 있습니다 :) 제안을 주셔서 감사하지만 문제는 여전히 계속됩니다. 내 원래의 게시물에 디버거 출력의 일부를 추가했습니다. –

답변

1

을 무슨 일을하는지 방법은 이전 컨트롤러에 다시 가고 있지만, 탐색의 유형에 첫 번째 컨트롤러의 다른 복사본을 추가하지 않습니다 기 스택. 대신 popViewControllerAnimated:에 네비게이션 컨트롤러를 말해보십시오. ``잘 self.matchImage.image = self._your 속성을 :

+0

감사합니다. 내가 뭔가를 간과 알고 있었다. 사실 popToRootViewControllerAnimated을 사용 : 그것은 큰 노력하고 있습니다. –

관련 문제