2011-04-23 5 views
0

나는 앱 시작시 표시되는 스플래시 페이지를 가지고있어 클라이언트가 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가 발생하지 않습니다.

아이디어가 있으십니까?

+0

'[self.window addSubview : launchImageView]'행을 주석 처리하는 경우에도 여전히 524kb입니까? '[self.window viewWithTag : 121]'이 실제로 이미지보기를 반환하고 어떤 이유로 든 제로가 아닌지 확인 했습니까? – Anomie

+0

시뮬레이터의 하드웨어 메뉴에서 '메모리 경고 시뮬레이션'을 수행하면 메모리가 사라 집니까? 나는 메모리가 필요할 때까지 UIKit을 장래에 캐싱 할 수도 있다고 생각하고있다. –

+0

@Anomie 내가이 라인을 주석 처리한다면 나는 여전히 524kb를 가지고있다. 문자열을 설정할 때부터 전체 섹션을 주석 처리하면 524kb는 더 이상 obv를 표시하지 않습니다. 또한 그것을 초기화하고 viewWithTag 및 해당 주소를 가리키는 함께 다시 얻은 후 바로 launchImageView에 대한 주소를 인쇄 할? – HenryH

답변

-1

스플래시 화면으로 Default.png를 사용하지 않는 이유는 무엇입니까? "Splash_page.png"의 이름을 "Default.png"로 변경하면로드시 스플래시 페이지가 자동으로 표시되며 UIImageView (Default.png 포함)를 MainWindow에 추가하고 x 시간이 지나면 rootViewController를 시작합니다.

+0

그게 바로 그가하고있는 일입니다. 게시 된 코드를 살펴보십시오. – Anomie

관련 문제