2010-12-06 7 views
0

私はすでに "CFString isNaturallyRTL"の検索結果が0です。CFString isNaturallyRTL - 解放されたインスタンスにメッセージが送信されました

これらは私のクラスである:今

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

、私はthaのは2つのテキストボックスとボタンが含まれているボタンのタッチで開くビューを持っています。このような。

- (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を呼び出します。大丈夫です。私は、どこに問題が... 誰かが解決策を知っているかわからない

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

: 私はdrawRouteTextboxesを呼んで三回目は、それが私にこのランタイムエラーを返しますか? このエラーが発生したのは初めてです!

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

答えて

1

It's all correct, compile and run.

すべて正しい場合は、エラーなく実行されます。 ;)

これが容疑者になります。

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

from.textto.textが、自動リリースオブジェクトまたは後でリリースされるオブジェクトのいずれかを返す場合、上記の文字列は保持されず、表示されているように容易にリリースされる問題につながる可能性があります。

代わりにself.fromText = from.text;を使用してください。 NSString*性質はほとんど常にcopyなくretainでなければならないこと

注意。

+0

大変ありがとうございます! – elp

関連する問題