Iphone TextField.text

时间:2010-08-23 08:59:29

标签: iphone cocoa-touch uikit

我在我的应用程序中有这个代码,我将文本字段文本放在我的NSString属性中。

  

iname = textField.text;

之后在某些时候我这样做是为了确保字符串不为空

  

[iname isEqualToString:@“”]

问题是,如果文本字段包含一个没有空格的单词,那么效果很好 如果有空间它会崩溃!我不明白为什么?

请帮忙!非常感谢你

2 个答案:

答案 0 :(得分:1)

iname = textField.text;

iname是一个实例变量,对吧?如果是这样,你需要对这个字符串进行共同拥有,这样当文本字段停止拥有它时字符串就不会死掉(如果包括用户在内的任何内容替换{{1}的文本字段值,就会发生这种情况。使用新值 - 新字符串)。简单地将字符串的指针指定给您的一个实例变量并不取得字符串的所有权。有关详细信息,请参阅the Memory Management Programming Guide for Cocoa Touch

如果您不这样做,那么当您尝试向text中指针所在的现在死对象发送消息时,程序将崩溃。

  

之后在某些时候我这样做是为了确保字符串不为空

iname

......例如。

  

问题是,如果文本字段包含一个没有空格的单词,那么如果有空间崩溃它就会很好用!

有时可能会有一个随机因素来判断崩溃是否存在。

证明我的理论的方法是在乐器的Zombies乐器下运行你的应用程序。该工具导致没有所有者的物体不会死亡(被解除分配),而是成为僵尸。当您向僵尸发送消息时,您将在仪器时间轴中获得一个标记,您可以使用该标记来检查对象及其历史记录,以找出它为什么在它应该具有之前死亡/为什么您仍然保持它在它死后。

答案 1 :(得分:1)

使用getter正确解决问题

  

self.iname = textField.text;