CFString isNaturallyRTL - messaggio inviato a un'istanza deallocato
-
09-10-2019 - |
Domanda
I già su Google per "CFString isNaturallyRTL" con 0 risultati.
queste sono le mie classi:
//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;
[...]
}
}
Ora, ho una visione che si aprono sul pulsante a sfioramento tha contiene due caselle di testo e un pulsante. Ti piace questa.
- (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];
}
E 'tutto corretto, compilare ed eseguire.
La prima volta che clicco drawRouteTextboxes, si apre mio punto di vista con testo di default impostato ( "Roma" e "lecce"). La seconda volta, ho aperto la vista, modificare campo di testo e chiamare drawRoute. Va bene. La terza volta che io chiamo drawRouteTextboxes mi restituisce questo errore runtime:
*** -[CFString _isNaturallyRTL]: message sent to deallocated instance 0x3a8d140
Non so dove è il problema ... Qualcuno sa una soluzione? E 'la prima volta che vedo questo errore!
Grazie, Alberto.
Soluzione
E 'tutto corretto, compilare ed eseguire.
Se era tutto corretto, sarebbe eseguito senza errori. ;)
Questo sembra sospetto:
fromText = from.text; ToText = to.text;
Se from.text
e to.text
stanno tornando gli oggetti o gli oggetti sia autoreleased che sono poi rilasciato, quindi quanto sopra non mantiene le corde e potrebbe facilmente portare ad un problema di eccesso di rilascio come si sta vedendo.
Usa self.fromText = from.text;
invece.
Si noti che le proprietà NSString*
dovrebbe quasi sempre essere copy
e non retain
.