Ошибка отправки сообщения объекта - PullRequest
0 голосов
/ 14 апреля 2011

Я пытаюсь сделать следующее

- (void)textViewDidChange:(UITextView *)textView{
if(textView == txtYourTip){
    if([txtYourTip.text length] < 100){
        strTip = txtYourTip.text;
        NSLog(@"%@",strTip);
    } else {
        NSLog(@"%@",strTip);
        txtYourTip.text = strTip;
    }}

Приложение аварийно завершает работу, когда управление переходит к другой части. strTip имеет тип NSString.

viewDidLoad содержит

    txtYourTip = [[UITextView alloc] initWithFrame:CGRectMake(15, 80, 290, 80)];
[txtYourTip.layer setBorderColor:[[UIColor lightGrayColor] CGColor]];
[txtYourTip setDelegate:self];
[txtYourTip setContentInset:UIEdgeInsetsMake(10, 10, 10, 10)];
txtYourTip.layer.cornerRadius = 10.0;
[txtYourTip.layer setBorderWidth:2.0];
[contentView addSubview:txtYourTip];

strTip = [[NSMutableString alloc] init];

1 Ответ

1 голос
/ 14 апреля 2011

Если вы поместите strTip = @ "" в viewDidLoad, как вы сказали, я думаю, что причина в этом. Выделение строки NSS с текстом "@" делает его автоматически выпущенным. Так что в какой-то момент данные публикуются, но указатели указывают на это. Когда вы пытаетесь отобразить его, у вас есть исключение.

Попробуйте это в вашем viewDidLoad: strTip = [[NSString alloc] init]; или

strTip = @"";
[strTip retain];

Либо надо работать, и понадобится:

[strTip release];
strTip = nil;

в представлении viewDidUnload, чтобы не пропускать

...