我正在尝试执行以下操作
- (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];
答案 0 :(得分:1)
如果你把strTip = @“”放在viewDidLoad中就像你说的那样我认为这就是原因。 使用@“a text”分配NSString使其自动释放。所以在某些时候数据被释放但指针指向它。当您尝试显示它时,您有一个例外。
在viewDidLoad中尝试此操作:
strTip = [[NSString alloc] init];
或
strTip = @"";
[strTip retain];
任何一个都应该工作,需要:
[strTip release];
strTip = nil;
在视图viewDidUnload中所以你不要泄漏