나는 앱 시작시 표시되는 스플래시 페이지를 가지고있어 클라이언트가 x 시간 동안 계속 볼 수있게하려고합니다. 이미지가 공개되지 않는 것을 제외하면 모든 것이 효과적입니다.ImageView가 출시되지 않는 이유는 무엇입니까?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *fileLocation = [[NSBundle mainBundle] pathForResource:@"splash_page" ofType:@"png"];
NSData *imageData = [[NSData alloc] initWithContentsOfFile:fileLocation];
UIImage *launchImage = [[UIImage alloc] initWithData:imageData];
[imageData release], imageData = nil;
UIImageView *launchImageView = [[UIImageView alloc] initWithImage:launchImage];
launchImageView.frame = CGRectMake(0,
0,
[[UIScreen mainScreen] bounds].size.width ,
[[UIScreen mainScreen] bounds].size.height);
launchImageView.tag = 121;
[launchImage release], launchImage = nil;
[self.window addSubview:launchImageView];
[launchImageView release], launchImage = nil;
[self.window makeKeyAndVisible];
[self performSelector:@selector(initApp) withObject:nil afterDelay:kInitDelay];
return YES;
}
- (void)initApp
{
[[UIApplication sharedApplication] setStatusBarHidden:NO];
UIImageView *launchImageView = (UIImageView*)[self.window viewWithTag:121];
[launchImageView removeFromSuperview];
RootNavController *navController = [[RootNavController alloc] initRootController];
self.rootNavController = navController;
[self.window addSubview:navController.view];
[navController release], navController = nil;
}
그것은 removeFromSuperview 그래서이 그러나 나는 아직도 인스트루먼츠의 5백24킬로바이트의 malloc을 볼 수 있습니다 해제해야 뷰에 릴리스를 호출해야합니다 이미지입니다 메신저 할당 도구를 개체 나의 이해이다. 책임 라이브러리 = libRIP.A.dylib 및 책임 호출자 ripl_Create.
내가 스플래시 페이지 코드를 주석 처리하고 NavController를 직접 실행하면 524kb가 발생하지 않습니다.
아이디어가 있으십니까?
'[self.window addSubview : launchImageView]'행을 주석 처리하는 경우에도 여전히 524kb입니까? '[self.window viewWithTag : 121]'이 실제로 이미지보기를 반환하고 어떤 이유로 든 제로가 아닌지 확인 했습니까? – Anomie
시뮬레이터의 하드웨어 메뉴에서 '메모리 경고 시뮬레이션'을 수행하면 메모리가 사라 집니까? 나는 메모리가 필요할 때까지 UIKit을 장래에 캐싱 할 수도 있다고 생각하고있다. –
@Anomie 내가이 라인을 주석 처리한다면 나는 여전히 524kb를 가지고있다. 문자열을 설정할 때부터 전체 섹션을 주석 처리하면 524kb는 더 이상 obv를 표시하지 않습니다. 또한 그것을 초기화하고 viewWithTag 및 해당 주소를 가리키는 함께 다시 얻은 후 바로 launchImageView에 대한 주소를 인쇄 할? – HenryH