2010-11-29 4 views
1

supposons que vous créez une nouvelle application iOS à partir de rien, avec une seule fenêtre. alors vous mettre ce code dans la méthode d'application didFinishLaunching appDelegate:iOS4 (UIAlertView) pourquoi ce code provoque des fuites de mémoire?

UIAlertView *myAlert = [[UIAlertView alloc] 
    initWithTitle:@"alert"         
    message:@"message" 
    delegate:nil /* same problem with 'delegate:self' */ 
    cancelButtonTitle:nil 
    otherButtonTitles:@"Ok", nil]; 
[myAlert show]; 
[myAlert release]; 

construction et l'exploitation dans le simulateur 4.1, instrument attach et ... cela provoque à chaque fois une fuite de mémoire. dans le simulateur 3.1.2 sur le léopard, pas de problème du tout.

Bien sûr, dans une application réelle, l'UIalertView est déclenchée par un bouton, mais le résultat est identique.

Quel est le problème? est buggy UIAlertView jusqu'à iOS4?

+0

Qu'est-ce qui vous fait penser qu'il fuit réellement? La mémoire sera utilisée jusqu'à ce que vous la fermiez, alors assurez-vous de tester le bon intervalle. – Eiko

+1

Les fuites sont plus intelligentes que ça. Il détecte les objets orphelins réels. –

Répondre

3

Ne pas rechercher les fuites dans un simulateur. Il n'a pas le même modèle de mémoire donc signale les fuites quand il n'y en a pas.

test sur un périphérique réel et si la fuite est toujours là, le signaler comme un bug à Apple :)

+0

OK, merci, Dean, tu as raison! Si je teste ce code sur un appareil réel, cela ne provoque pas de fuites ... mais les tests sur l'appareil sont si lents !!! Et, curieusement, sur leopard/sdk3.1.2, l'appareil et le simulateur ont clairement les mêmes réactions aux fuites. – Chrysotribax

+0

Jésus, merci pour cette réponse. Je devenais fou en vérifiant les fuites à l'intérieur du simulateur :). – sabiland

Questions connexes