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

标签 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 委托(delegate)并检查“onChange”然后更改字符串,但我正在寻找是否有其他方法。

最佳答案

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

最简单的两种方法可能是

  • 设置 UITextFieldDelegate正如你所说,并实现 textField:shouldChangeCharactersInRange:replacementString:方法。
  • 使用NSNotificationCenter并观察 UITextFieldTextDidBeginEditingNotification事件。确保在释放对象时将其作为观察者移除
  • 关于ios - 无论如何将 NSString 设置为指向另一个字符串的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144039/

    相关文章:

    iOS:renderInContext 和横向方向问题

    ios - 我怎样才能像 Play Music 应用程序一样弹出消息

    ios - 如何正确分组和最小化 UITextfields 的样式代码?

    iOS7 Sprite Kit 如何禁用对 Sprite 的触摸以使其成为 "tap through"?

    iphone - 使用 iPhone 发送 HTML 到远程客户端

    ios - Facebook token / session 策略

    c - gpointer 转换为 gint * 会导致段错误 - 为什么?

    c - 链表问题

    c - LeetCode : Two Sums (Error: Returning the Array)

    objective-c - 防止 uiscrollview 滚动到某个点