2009-02-24 6 views
1

Mon application iPhone doit effectuer un codage de séquence d'échappement d'URL pour un paramètre de formulaire. Le NSString stringByAddingPercentEscapesUsingEncoding comme stringByAddingPercentEscapesUsingEncoding n'échappe pas beaucoup. C'est ce que j'aiGestion de la passerelle et de la gestion de la mémoire sans frais

-(NSString*)currentMessageUrlEncoded{ 
    CFStringRef originalURLString = (CFStringRef) self.currentMessage; 
    CFStringRef urlString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, originalURLString, NULL, (CFStringRef) @"&+", kCFStringEncodingUTF8); 
    NSString *result = (NSString*) urlString; 
    [result autorelease]; // Is this sufficient? 
    return result; 
} 

Je ne suis pas sûr de la gestion de la mémoire ici? Est-ce que l'autorelease sur le résultat est suffisante ou est-ce que j'aboie complètement le mauvais arbre?

Répondre

3

Yes it is. Vous pouvez même raccourcir votre méthode un peu:

- (NSString *)urlEncodedMessage:(NSString *)message { 
    CFStringRef urlString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef) message, NULL, (CFStringRef) @"&+", kCFStringEncodingUTF8); 
    return [(NSString *)urlString autorelease]; 
} 
+0

Merci pour la réponse et le lien. (La méthode originale était plus courte, btw, je l'ai élargie pour souligner la partie à propos de laquelle je demandais). –

Questions connexes