好吧,我有一个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 ] ;
我仍在考虑记忆管理,就像我在正常情况下那样。这可能就是这里的缺陷。
答案 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];