dans iOS4.3 Si je définis
- (void)viewWillAppear:(BOOL)animated { self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.9 green:0 blue:0 alpha:0]; [super viewWillAppear:animated]; }
5 Réponses :
Essayez d'utiliser Construire et analyser (ou analysez-le dans XCode 4) et assurez-vous que vous n'êtes pas fuir ailleurs.) Si vous voyez toujours le problème, déposez un rapport de bogue avec Apple. P>
Ceci est vraiment câblé. J'utilise le même code exécuté dans les instruments sur iOS4.2 et iOS4.3, iOS4.2 n'a pas ce problème
Tout d'abord, n'utilisez pas Suivant, comment savez-vous que vous avez une fuite? Avez-vous utilisé des instruments? Enfin, avez-vous activé le suivi des événements dans l'instrument d'allocations et voyez où tous les retenues / rejets sont envoyés? P>
Quant à votre fuite, peu importe que cela ne se produise que dans iOS 4.3 vs.2 4.2. Une fuite est une fuite. Bien qu'il y ait une chance dans les cadres Apple, ce n'est pas probable. Cependant, dans l'affirmative, un rapport de bogue est très apprécié. P>
En outre, utilisez l'instrument d'allocations pour voir si vous accumulez d'autres objets qui ne figurent pas comme des fuites (mais ne devraient toujours pas être autour). Les fuites ne détecte que des objets non référencables, mais il existe de nombreuses autres façons de fuir la mémoire! P> retensipeCount code>. Il est inutile. P>
+ blackcolor code> est un singleton. Ainsi, vous allez probablement la fuite, mais il n'y a qu'une seule et des fuites ne le trouvera pas car elle est référencée par un global. P>
J'ai utilisé des instruments pour surveiller la fuite et les allocateurs. Je trouve le nombre d'objets CGColor à continuer d'augmenter si j'utilise navigationbar.tintcolor = [couleur-uicolor Colorwithred: 0,0 vert: 0,0 bleu: 0.0 alpha: 1] code> dans la viewwillappear. La fuite n'arrive que dans iOS4.3
Merci beaucoup pour votre aide. Je l'ai déjà signalé à Apple. Je viens de modifier la question, ajoutant du code. Pourriez-vous créer un projet vraiment simple qui ont deux écran: racineviewController et détaillantViewController. Et définissez le teintcolor dans la vueWillappear dans chaque mode de vue. Vous pouvez voir la fuite dans les instruments. Vraiment apprécier votre aide.
Je peux confirmer la même fuite dans mon code - aucune fuite signalée dans 4.2 et la fuite apparaît dans 4.3 P>
Je vois aussi le même problème. J'ai déposé un bug avec Apple et je posterai des mises à jour lorsque je les entends.
J'ai trouvé une solution de contournement. Le problème est d'appeler autoavigationcontroller.navigationbar.tintcolor. Mais si vous définissez la couleur de la teinte pour un différent em> uiviewcontroller, vous n'aurez pas le même problème. Par exemple, cela ne semble pas fuir: p> - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController *detailViewController = [[DetailViewController alloc] initWithStyle:UITableViewStyleGrouped];
detailViewController.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1];
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
ive a eu cette question avant 4.2, je pense que Colourwithred: Green: Blue attribue un nouvel objet UICOLOR que votre responsable de la gestion.
La solution consiste à créer une instance pour votre couleur de teinte et de le libérer lorsque vous avez terminé avec votre Contrôleur de navigation dans la vue ViewDiduLload. P>
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; tintBarColor = [UIColor colorWithRed:50.0/255 green:134.0/255 blue:187.0/255 alpha:1]; self.navigationController.navigationBar.tintColor = tintBarColor; } - (void)viewDidUnload { [super viewDidUnload]; [tintBarColor release]; // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand. // For example: self.myOutlet = nil; }
Merci de confirmer que ce n'était pas seulement moi. Utilisez cela pour les âges et n'avez jamais eu de problème. Étrange comment cela ne se produit que parfois.