2010-12-06 3 views
0

Я уже googled для «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; 
    [...] 
    } 
} 

Теперь у меня есть мнение, что на открытии сенсорной кнопки тха содержит два текстовых поля и кнопку. Как это.

- (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»). Второй раз я открываю представление, редактирую текстовое поле и вызываю drawRoute. Все нормально. В третий раз, что я называю drawRouteTextboxes это вернуть мне эту ошибку во время выполнения:

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

Я не знаю, где проблема ... Кто-то знает решение? Это первый раз, когда я вижу эту ошибку!

спасибо, Alberto.

ответ

1

It's all correct, compile and run.

Если все было в порядке, это могло бы произойти без ошибок. ;)

Это выглядит подозреваемый:

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

Если from.text и to.text возвращают либо автореализованные объекты, либо объекты, которые позже выпущены, то приведенное выше не сохраняет строки и может легко привести к проблеме с высвобождением, поскольку вы видите.

Используйте вместо этого self.fromText = from.text;.

Обратите внимание, что NSString* свойства должны почти всегда быть copy и не retain.

+0

ОК, спасибо большое! – elp 2010-12-06 18:35:35

Смежные вопросы