CFString isNaturallyRTL - Nachricht gesendet deallokierten Instanz
-
09-10-2019 - |
Frage
ich schon gegoogelt für "CFString isNaturallyRTL" mit 0 Ergebnissen.
das sind meine Klassen:
//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;
[...]
}
}
Nun habe ich eine Ansicht, die offen auf Tastendruck tha enthält zwei Textfelder und eine Schaltfläche. So wie hier.
- (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];
}
Es ist alles korrekt, kompilieren und ausführen.
Zum ersten Mal, dass ich drawRouteTextboxes klicken, wird es meiner Ansicht nach mit Standardtext gefassten ( „Roma“ und „lecce“). Das zweite Mal, öffne ich die Ansicht, bearbeiten sehene Feld ein und rufen drawRoute. Es ist in Ordnung. Das dritte Mal, dass ich drawRouteTextboxes nenne es zurückgeben mir diesen Laufzeitfehler:
*** -[CFString _isNaturallyRTL]: message sent to deallocated instance 0x3a8d140
Ich weiß nicht, wo ist das Problem ... Jemand weiß eine Lösung? Es ist das erste Mal, dass ich diesen Fehler sehen!
Danke, Alberto.
Lösung
Es ist alles korrekt, kompilieren und ausführen.
Wenn alles richtig ist, wäre es ohne Fehler ausgeführt. ;)
Das sieht vermuten:
= fromtext from.text; toText = to.text;
Wenn from.text
und to.text
kehren entweder Autoreleased Objekte oder Objekte, die später wieder freigelassen werden, dann ist die oben nicht die Saiten nicht beibehalten und leicht zu einem über Release Problem führen könnte, wie Sie sehen.
Verwenden self.fromText = from.text;
statt.
Beachten Sie, dass NSString*
Eigenschaften sollte fast immer sein copy
und nicht retain
.