我是 Objective C 的新手,我有一个关于内存管理的简单问题。
这是 Button 的一个简单方法,它用 UITextField
中的文本更改 UILabel
。
-(IBAction) setLabel
{
NSString *inputText = [[NSString alloc]initWithString:myTextField.text];
[myLabel setText:inputText];
[inputText release];
}
这段代码工作正常。但是如果我将此代码更改为以下内容,
-(IBAction) setLabel
{
NSString *inputText = [[NSString alloc]initWithString:@"some string value"];
inputText = myTextField.text;
[myLabel setText:inputText];
[inputText release];
}
然后应用程序在运行时崩溃。我必须删除行 [inputText release];
才能运行应用程序而不会崩溃。
据我所知,如果我用“alloc”创建了一些东西,我必须释放它。但是在这里,如果我释放那个字符串应用程序崩溃。有人可以解释一下原因吗?
提前致谢
最佳答案
版本崩溃的原因是因为您将 inputText
重新分配给 myTextField.text
。对 release
的调用现在正在释放该字符串,而不是在 setLabel
的第一行分配的字符串。如果您为该赋值使用另一个变量,它应该可以修复崩溃。
关于ios - iPhone SDK 发布 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485592/