对象消息发送错误

时间:2011-04-14 13:10:53

标签: objective-c nsstring uitextview

我正在尝试执行以下操作

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

当控件转到else部分时应用程序崩溃。 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 个答案:

答案 0 :(得分:1)

如果你把strTip = @“”放在viewDidLoad中就像你说的那样我认为这就是原因。 使用@“a text”分配NSString使其自动释放。所以在某些时候数据被释放但指针指向它。当您尝试显示它时,您有一个例外。

在viewDidLoad中尝试此操作: strTip = [[NSString alloc] init];

strTip = @"";
[strTip retain];

任何一个都应该工作,需要:

[strTip release];
strTip = nil;
在视图viewDidUnload中

所以你不要泄漏