1

例如,请参见下面的代码。

UITextField * myTextField = [[UITextField alloc]init];
NSString * myString = myTextField.text; //Set as reference to string here

NSLog(@"%@", myString); //Should be null

[myTextField setText:@"foobar"];

NSLog(@"%@", myString); //Should be foobar

我期望当 myTextField 文本的值发生变化时,“myString”也会发生变化。

我知道另一种方法是设置 UITextField 委托并检查“onChange”然后更改字符串,但我正在寻找是否有其他方法。

4

2 回答 2

3

我不认为这是你想要的方式可行的。的text属性UITextFieldNSString不可变的。当它发生变化时,NSString会创建一个新对象。除此之外,肯定还有其他事情在幕后使这成为不可能。

最简单的两种方法可能是

  1. UITextFieldDelegate按照您所说的设置 a ,并实施该textField:shouldChangeCharactersInRange:replacementString:方法。

  2. 使用NSNotificationCenter并观察UITextFieldTextDidBeginEditingNotification事件。确保在释放对象时将其作为观察者移除

于 2013-10-02T18:39:48.427 回答
0

NSString是一个不可变的类。你不能改变它。您所能做的就是将NSString *指针变量指向不同的字符串。你必须把另一个

myString = myTextField.text;

如果你想要这种行为,就在那里。

于 2013-10-02T18:38:27.150 回答