멀티 뷰 앱이 있는데 메모리 문제가 있습니다. 몇 가지 조언을 부탁드립니다. 사용자가 일부보기간에 변경할 수있는 스위치 컨트롤러를 처음로드하는 애플리케이션이 있습니다. 어떤 시점에서 나는 switchview 컨트롤러를 제거하고 창에 또 다른 서브 뷰를 추가하려고합니다. 따라서, 공유 애플리케이션의 델리게이트에 액세스하여 switchview 컨트롤러를 제거하고 두 번째를 삽입했습니다. 이해가 가지 않습니다. 이것이 올바른 접근 방식이 있다면 나는 두 번째 컨트롤러의 retainCount 값을 인쇄하고 19를 보여주는 이후 메모리 누수가 발생할 것을 두려워 !!!!!iOS - MultiView Application - Memory concerns
다음은 내 코드의 스냅 샷입니다. 올바른 방법입니까? 이러한 메모리 누수를 피하려면 어떻게해야합니까? 내 ApplicationDelegate에서 확인
나는 또한 내가 그 컨트롤러를 합성하고
[self.window addSubview:switchViewController.view];
[self.window makeKeyAndVisible];
통지를 추가하고 해제
하는 .m 파일에MyAppDelegate.h
@class SwitchViewController;
@class SecondController;
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
SwitchViewController *switchViewController;
SecondController *secondController;
}
@property (nonatomic, retain) IBOutlet SwitchViewController *switchViewController;
@property (nonatomic, retain) IBOutlet SecondController *secondController;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
속성으로 설정이보기 컨트롤러가 dealloc 함수에서
이제 내 문제가 있습니다! SwitchViewController.m에서 나는 윈도우의 서브 뷰로서, 현재 SwitchViewController를 제거하고 내 secondController을 배치 내 응용 프로그램의 위임에 액세스하려면 : 여기
SwitchViewController.m
SecondController *secondController2= [[SecondController alloc] init];
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.switchViewController.view removeFromSuperview];
appDelegate.secondController = secondController2;
[appDelegate.window addSubview:appDelegate.secondController.view];
[secondController2 release];
질문입니다. [appDelegate.secondController retainCounter]를 인쇄하면 19가됩니다. 올바른 방법입니다. 실제로 메모리 누수가 있습니까? 사전에
감사합니다,
안드레아스
개체의 보유 횟수를 사용해서는 안됩니다. 그것은 거의 혼동을 일으킬 정도로 거의 사용되지 않습니다. – Mats
팁을 주셔서 감사합니다. 아직도, 내 앱 대리인의 윈도우에서 다른 하위 뷰를로드하는 올바른 방법이라고 제안 하시겠습니까? 그것은 메모리 안전합니까? – andreasv