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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top