Je suis curieux de savoir s'il y a une bonne raison pour laquelle je ne devrais/ne devriez pas utiliser @synthesize pour le tabBarController ci-dessous, ou cela n'a-t-il pas d'importance?@synthesize avec UITabBarController?
@implementation ScramAppDelegate
@synthesize window;
@synthesize tabBarController;
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self setTabBarController:[[UITabBarController alloc] init]];
[window addSubview:[tabBarController view]];
[window makeKeyAndVisible];
return YES;
}
-(void)dealloc {
[tabBarController release];
[self setTabBarController: nil];
[window release];
[super dealloc];
}
OU
@implementation ScramAppDelegate
@synthesize window;
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
tabBarController = [[UITabBarController alloc] init];
[window addSubview:[tabBarController view]];
[window makeKeyAndVisible];
return YES;
}
-(void)dealloc {
[tabBarController release];
[window release];
[super dealloc];
}
acclamations Gary
Je pensais la même chose au sujet de la fuite de mémoire, c'est pourquoi j'ai fait [version de TabBarController]; et [self setTabBarController: nil]; en dealloc. Par ma manière de penser qui aboutit à la gestion correcte de la mémoire, bien que ce soit un peu académique, le dealloc ne se fait jamais appeler car les applications libèrent toute sa mémoire à la sortie de toute façon. – fuzzygoat
Le problème est que vous l'avez 'conservé' deux fois ('alloc' incrémente le nombre de retain, et ensuite votre propriété est définie sur' retain', donc le setter incrémenté sera incrémenté une seconde fois), donc si vous ' re relâcher une fois, puis le mettre à zéro, vous allez créer une fuite de mémoire. –
de sorte que le nombre de retenue est de 2, après la libération de son 1, après l'ensemble nil est libéré à nouveau (maintenant son 0) et nul est conservé? – fuzzygoat