2010-07-19 4 views
1

Je travaille actuellement sur un projet ipad et je l'ai trouvé. Voici donc ma structurePourquoi la mémoire est-elle toujours active lorsque je supprimefromsuperview?

i UIViewController comme sous-classé customizedVC, comme celui-ci

@protocol customizedVCDelegate 

-(void)viewclosed:(UIView *)view oldviewcontroller:(UIViewController *)oldvc newvcname:(UIViewController *)newvc; 

@end 


@interface customizedVC : UIViewController { 
    id <customizedVCDelegate> delegate; 
} 

@property (assign) id <customizedVCDelegate> delegate; 

@end 

dans demoipadappDelegate, qui est l'épine dorsale de commutation vues, je pris le protocole et mis en œuvre la fonction viewclosed. J'ai eu beaucoup de vues, chaque vue sera chargée depuis la plume. donc je charge le premier à demoipadappDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    //loading openvinview 
    openingVC *vc = [[openingVC alloc] initWithNibName:@"openingview" bundle:nil]; 
    vc.delegate = self; 
    [window addSubview:vc.view]; 
    [window makeKeyAndVisible]; 

    return YES; 
} 

pour changer de vue, je vais tirer le viewClosed dans chaque viewcontroller. par exemple, j'ai VC1 et je veux passer à VC2. je tire un viewClosed en vc1. et puisque le délégué de vc1 est demoipadappDelegate, tout le délégué de vc est demoipadappDelegate. donc le demoipadappDelegate recevra l'événement et le fera. ceci est dans demoipadappDelegate

-(void)viewclosed:(UIView *)view oldviewcontroller:(UIViewController *)oldvc newvcname:(UIViewController *)newvc; 
{ 

    self.currentVC = (customizedVC *)newvc; 
    self.currentVC.delegate = self; 
    [window addSubview:self.currentVC.view]; 

    [view removeFromSuperview]; 
    [oldvc release]; 

} 

Je m'attendais à ce que l'utilisation de la mémoire diminue. ce n'est pas le cas. J'ai également vérifié que dans chaque vc, j'ai déjà sorti manuellement tout ce que j'ai alloué. ce n'est pas le cas.

désolé pour mon pauvre anglais, je l'espère, que je l'avais expliqué assez clairement

Répondre

1

Etes-vous sûr que vous utilisez le boîtier à droite? La méthode est appelée removeFromSuperview et non removefromsuperview.

+0

oui, le boîtier était bon, pas causé par l'orthographe, mais merci quand même – shawhu

Questions connexes