2011-01-22 4 views
0

J'ai une méthode statique appelée writeToServer qui est appelée lorsque l'application entrer dans mode d'arrière-plan.Pourquoi mon application plante sur applicationDidEnterBackground?

dans mon AppDelegate.m:

- (void)applicationDidEnterBackground:(UIApplication *) application { 
    [LogZone writeToServer]; 
    NSLog(@"Log sended to server. Done."); 
} 

dans mon LogZone.m:

+ (void) writeToServer { 
    NSString *qStr = [[NSString alloc] 
     initWithFormat:@"%@?ip=%@&uid=%@&platform=%@&model=%@&lat=%@&lon=%@", 
      LOG_SERVER_URL, 
      _LOG_IP, _LOG_UID, _LOG_PLAT, _LOG_MOD, _LOG_LAT, _LOG_LON]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:qStr]];  
    [request setHTTPMethod: @"POST"]; 
    [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
} 

vars Majuscules sont des chaînes statiques créées de cette façon:

.h

extern NSString* _LOG_UID; 

.m

NSString* _LOG_UID = @"-1"; 

Quand je rentre en arrière-plan, il plantage avec ce "classique" Erreur:

* -[CFString respondsToSelector:]: message sent to deallocated instance 0x6a4c800

Mais pourquoi?
Je ne publie rien! =!

Qu'est-ce qui ne va pas?

+0

afficher les trace de la pile du débogueur. – coneybeare

+0

je ne suis pas capable. il ne montre que moi "2011-01-22 21: 02: 02.314 myApp [8709: 207] *** - [CFString respondsToSelector:]: message envoyé à l'instance désaffectée 0x6942bf0" sur cette ligne: "NSString * qStr [... ] " – elp

+0

Notez que l'objectif-c n'a pas de méthodes * statiques * .... – bbum

Répondre

1

But why? I don't release anything!

Bien sûr, mais gardez-vous les bons objets?

Conserver au bon moment est tout aussi important de ne pas relâcher au mauvais moment ...

+0

Droite. +1! J'ai résolu d'ajouter une retenue à mes vars. (_LOG_IP = [[Device getIPAddress] conserve];). Cela fonctionne, merci. – elp

+0

Excellent. J'espère que vous avez ajouté la version appropriée, si nécessaire, aussi! – bbum

+0

yessssss! tbs bbum. – elp

-1

Pourquoi ne pas simplement utiliser les éléments suivants:

NSString *qStr = [NSString stringWithFormat:@"%@?ip=%@&uid=%@&platform=%@&model=%@&lat=%@&lon=%@", LOG_SERVER_URL, _LOG_IP, _LOG_UID, _LOG_PLAT, _LOG_MOD, _LOG_LAT, _LOG_LON]; 
+0

Cela n'a rien à voir avec le crash. – bbum

+0

mais il va résoudre le crash. – WrightsCS

+0

il plantage le même. – elp

Questions connexes