管理UITextField.text属性

时间:2009-11-02 17:05:07

标签: objective-c nsstring uitextfield

好吧,我有一个UITextField。

其中是属性UITextField.text。

可以这样做:

// Assume we have UITextField * tf somewhere..
// now set its text..
tf.text = [ [ NSString alloc ] initWithUTF8String:"Init'd with utf8" ] ;

我的问题是记忆。 UITextField文本属性的旧值会发生什么

你不必这样做:

// maintain reference to old NSString
NSString * oldTfText = tf.text ;

// set the value to the new value you want
tf.text = [ [ NSString alloc ] initWithUTF8String:"Init'd with utf8" ] ;

// release the old NSString now..
[ oldTfText release ] ;

我仍在考虑记忆管理,就像我在正常情况下那样。这可能就是这里的缺陷。

2 个答案:

答案 0 :(得分:2)

UITextField将负责释放它拥有的任何旧值。您的问题仅在于您的代码,并且您必须释放此分配的NSString是正确的。

您也可以使用自动释放来避免额外声明。

tf.text = [ [ [ NSString alloc ] initWithUTF8String:"Init'd with utf8" ] autorelease];

答案 1 :(得分:0)

tf.text是一个二传手。查看头文件,定义属性:

@property(nonatomic,copy) NSString *text;

因此,我认为你应该这样设置它,并让系统处理它自己的副本:

mytext = [ [ NSString alloc ] initWithUTF8String:"Init'd with utf8" ] ;
tf.text = mytext;
[mytext release];