2010-12-06 38 views
0

J'ai déjà recherché sur "CFString isNaturallyRTL" avec 0 résultats.CFString isNaturallyRTL - message envoyé à l'instance désallouée

ce sont mes classes:

//in .H 
@interface myViewController : UIViewController { 
UITextField *from; 
UITextField *to; 
NSString *fromText; 
NSString *toText; 
} 

@property (nonatomic, retain) NSString* fromText; 
@property (nonatomic, retain) NSString* toText; 
@property (nonatomic, retain) UITextField *from; 
@property (nonatomic, retain) UITextField *to; 

//in .m 
@synthesize from, to; 
@synthesize fromText, toText; 

viewDidLoad(...) { 
    fromText = @"Roma"; 
    toText = @"Lecce"; 
} 

- (void) drawRoute { 
    if (([[from text] length] > 2) && ([[to text] length] > 2)) 
{ 
    fromText = from.text; 
    toText = to.text; 
    [...] 
    } 
} 

Maintenant, j'ai vue qui ouvrent sur tha tactile bouton contient deux zones de texte et un bouton. Comme ça.

- (void) drawRouteTextboxes { 
from = [[UITextField alloc] initWithFrame: [...] ]; 
from.text = fromText; 
from.delegate = self; 
[ctr.view addSubview:from]; 
[from release]; 

    to = [[UITextField alloc] initWithFrame: [...] ]; 

    [...] 

    [searchButton addTarget:self action:@selector(drawRoute) forControlEvents: UIControlEventTouchUpInside]; 
} 

Tout est correct, compile et exécuté.

Première fois que je clique sur drawRouteTextboxes, il ouvre ma vue avec le texte par défaut défini ("Roma" et "lecce"). La deuxième fois, j'ouvre la vue, édite textfield et appelle drawRoute. C'est bon. La troisième fois que je l'appelle drawRouteTextboxes il me renvoie cette erreur d'exécution:

*** -[CFString _isNaturallyRTL]: message sent to deallocated instance 0x3a8d140 

Je ne sais pas où est le problème ... Quelqu'un sait une solution? C'est la première fois que je vois cette erreur!

merci, Alberto.

Répondre

1

It's all correct, compile and run.

Si tout était correct, il fonctionnerait sans erreur. ;)

Cela semble suspect:

fromText = from.text; toText = to.text; Si from.text et to.text retournent soit des objets auto-libérés soit des objets qui sont libérés plus tard, alors ce qui précède ne conserve pas les chaînes et pourrait facilement conduire à un problème de relâchement comme vous le voyez. Pour plus d'informations, utilisez self.fromText = from.text;.

Notez que les propriétés NSString* doivent presque toujours être copy et non retain.

+0

ok, merci beaucoup! – elp