내 응용 프로그램에는 전체 응용 프로그램의 한 위치에서만 사용하는 UIViewController 하위 클래스 (VC)가 있습니다. 그 대신에, 나는 작성하고 다음과 같이 밀어왔다 :정적 UIViewController 하위 클래스에서 [super dealloc] 호출하지 않음
MyViewController* VC = [MyViewController new];
[self.navigationController pushViewController:VC animated:YES];
[VC release];
하지만이 내가이 유형의 뷰 컨트롤러를 사용하고있는 유일한 장소이기 때문에, 나는이 같은 그래서 뭔가를 할 수 있다고 생각했다 뷰 컨트롤러가 스택으로 푸시 때마다 재설정되지 않습니다 사용하는 설정 :
static MapsToSendPicker* VC = nil;
if(!VC) {
VC = [MapsToSendPicker new];
}
[self.navigationController pushViewController:VC animated:YES];
[VC release];
VC의 dealloc
방법, 내 인스턴스 변수를 모두 해제하고 전무로 설정하는 것이 그 코드의 문제는, 마지막으로 [super dealloc]
으로 전화합니다. 정적 뷰 컨트롤러를 할당 해제하지만 테스트 if(!VC)
은 true로 평가되지 않습니다 (이 경우 전체 아이디어의 목적을 무력화 한 다음 어쨌든 매번 View Controller를 다시 만들어야합니다).
내 솔루션 끝에 [super dealloc]
를 호출하는 dealloc
MyViewController의 방법 하지을 무시한다. 이 작동하지만 컴파일러에서 경고를 발생시킵니다. 이 디자인으로 얻을 수있는 기능을 유지하면서 경고를 없애려면 어떻게해야합니까? 감사!
: 빠른 Google 검색 후
, 나는이 솔루션을 발견 :
- (void)dealloc {
if(NO) {
[super dealloc];
}
}
을하지만 조금 ... 청소기 뭔가를하고 싶습니다. 이견있는 사람?
빠른 Google 검색 후에 ** 완전히 잘못된 대답 **을 발견했습니다. 그 "솔루션"은 기껏해야 메모리 누수입니다. – bbum