2010-04-21 2 views
1

Je peux utiliser les codes suivants pour couper une chaîne:Est-ce que stringByTrimmingCharactersInSet: une chaîne autoreleased?

-(void) aMethod { 
// myStr from a text box 
NSString *trimedStr = [mystr stringByTrimmingCharactersInSet: 
    [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
... 
// should I release trimedStr? 
} 

Je ne sais pas si le résultat trimedStr est une chaîne de autorelease? Comment puis-je savoir ça?

Répondre

4

Le fundamental rule of memory management in Objective-C

vous prenez possession d'un objet si vous créer à l'aide d'une méthode dont le nom commence par « alloc » ou « nouveau » ou contient « copie » (par exemple, alloc, newObject ou mutableCopy) ou si vous lui envoyez un message de conservation. Vous êtes responsable de l'abandon de la propriété des objets que vous possédez en utilisant la libération ou autorelease. Une autre fois vous recevez un objet, vous ne devez pas le libérer.

Comme le nom ne commence pas par alloc ou new et ne contient pas de copie, il est auto-libéré.

0

Oui, elle est auto-libérée.

Exécutez, ne marchez pas, la section Object Ownership Policy du Guide de programmation de gestion de mémoire pour savoir comment vous pouvez le savoir. (En bref, parce que le nom de la méthode ne commence pas "alloc" ou "new", ou contient le mot "copy", vous ne le possédez pas, et vous n'avez pas besoin de le libérer.)

Questions connexes