无论如何将NSString设置为指向另一个字符串的指针?

时间:2013-10-02 18:24:16

标签: ios objective-c pointers mobile nsstring

例如,请参阅以下代码。

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”然后更改字符串,但我想看看是否还有其他方法。

2 个答案:

答案 0 :(得分:3)

我认为这不是你想要的方式。 text的{​​{1}}属性是UITextField,它是不可变的。当它发生变化时,会创建一个新的NSString对象。除此之外,还有其他的东西在幕后发生,这使得这是不可能的。

这两种最简单的方法可能是

  1. 按照您的说法设置NSString,并实施UITextFieldDelegate方法。

  2. 使用textField:shouldChangeCharactersInRange:replacementString:并观察NSNotificationCenter事件。确保在取消分配对象时将其作为观察者移除

答案 1 :(得分:0)

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

myString = myTextField.text;

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