textview的NSString属性消失

时间:2012-12-29 00:53:17

标签: ios xcode nsstring

我认为通过prepareSeque方法应该将textView中写入的内容传递给下一个视图。 之前我在seque方法中使用textField和textfield.text工作正常。但我无法使用textView。

我在.h文件中有一个NSString属性:@property(weak,nonatomic)NSString * textString; 我在.m文件中将它同义化:@synthesize textString = _textString;

在我的textViewDidEndEditing中,我可以看到(通过调试)文本视图中的文本被拾取并且textString已设置。

  • (void)textViewDidEndEditing:(UITextView *)textView { NSString * theText = textView.text; self.textString = theText; }

然而,当我想要在我的Seque方法中检索textString时,它不包含任何文本:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"go"]) {

    ISecondViewController *vc = [segue destinationViewController];

    vc.funnyString = self.textString;
}

如果我输入:self.textString = @“嗨嗨”;在Seque方法中,funnyString将与Hi Hi一起传递,以便该部分正常工作。

在这种情况下,我是否完全误解了NSString的“获取和设置”?

1 个答案:

答案 0 :(得分:2)

您的问题是,您weak使用textString属性,因此当您的资源范围超出nil方法时,textViewDidEndEditing属性为nil

为什么呢?因为弱引用的原则是,只要您引用的对象不再存在,它就会被设置为theText。这将是方法结束时不存在的“strong”对象的情况。请改用{{1}}属性。