지연로드는 UITabBarController 작업이 아닙니다. 대신 Tab과 관련된 viewController의 책임입니다.
각 UIViewController와 연결된 UIView를 해제하려면 TabBarItem을 변경할 때마다 UITabBarController와 연결된 각 UIViewController 하위 클래스에서 다음 메서드를 구현해야합니다.viewControllers 속성 :
-(void)viewDidDisappear {
[self.view removeFromSuperview];
self.view = nil;
}
분명히 말해서 UIViewController와 관련된 self.view가 제거됩니다. 그러나 코드가 충분히 똑똑하다면 관련된 모든 객체가 제거됩니다. 예를 들어,에는 loadView 방법은 다음과 같다 있다고 가정 :이있는 contentView과 메모리 responsabilities 내의 모든 객체에서,있는 contentView에 요구되는이 self.view 속성에 출시과 연결되어 있음을 의미
-(void)loadView {
UIView *contentVew = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = contentView;
…
...
UILabel *aLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,320,50)];
…
…
[contentView addSubview:aLabel];
[aLabel release];
…
[contentView release];
}
.
이 시나리오에서는 self.view (즉, contentView에 대한 참조)를 제거하여 모든 객체의 도미노 스타일을 릴리스하는 것이 목표입니다.
안부
나는 현재이 탭 표시 줄에서 비활성 뷰 컨트롤러를 언로드 사용하고
그래도 uitabbarcontroller를 재 작성하는 방법을 알고 있었기 때문에 내 탭 바를 관리해야했습니다. 어쩌면 내가 시도 할 수 ... – mk12
전혀 열심히, 당신은 단지 하나의 방법을 구현해야 selectItem 않았다, 그리고 당신이 선택한 항목에 따라 매우 똑바로 앞으로 설정하고 게으른 로딩 할 수있는 그런 식으로 – Daniel
그래서 당신은 내가 게으른로드 및 탭 표시 줄 또는 UITabBarController 사용하여 내 자신의 uiviewcontroller 클래스를 만들어야한다고 말하는? didSelectItem 메서드를 시도했지만 제대로 작동하지 못했습니다. – mk12