0

私はすでに「CFStringisNaturallyRTL」をグーグルで検索しましたが、結果は0です。

これらは私のクラスです:

//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;
    [...]
  }
}

これで、ボタンタッチで開くビューがあり、2つのテキストボックスと1つのボタンが含まれています。このような。

- (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];
}

それはすべて正しく、コンパイルして実行します。

初めてdrawRouteTextboxesをクリックすると、デフォルトのテキストが設定された状態でビューが開きます(「Roma」と「lecce」)。2回目は、ビューを開き、テキストフィールドを編集して、drawRouteを呼び出します。大丈夫です。drawRouteTextboxesを3回呼び出すと、次のランタイムエラーが返されます。

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

問題がどこにあるのかわかりません...誰かが解決策を知っていますか?このエラーが表示されるのは初めてです。

ありがとう、アルベルト。

4

1 に答える 1

1

それはすべて正しく、コンパイルして実行します。

それがすべて正しければ、エラーなしで実行されます。;)

これは疑わしいようです:

fromText = from.text; toText = to.text;

自動リリースされたオブジェクトまたは後でリリースされるオブジェクトのいずれかを返している場合from.text、上記は文字列を保持せず、見ているようにオーバーリリースの問題を簡単に引き起こす可能性があります。to.text

self.fromText = from.text;代わりに使用してください。

ほとんどの場合NSString*、プロパティはである必要があり、ではないことに注意してください。copyretain

于 2010-12-06T16:32:40.133 に答える