ios - iPhone SDK 发布 NSString

标签 ios objective-c memory-management nsstring

我是 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/

相关文章:

c - 将 2 个值插入链表节点

ios - swift 2.3 和 Xcode8.1 中的通用加密

javascript - Ionic Cordova 推送提醒问题与振动和声音 iOS

iOS - 清除 WebView 中的返回缓存

objective-c - AVAudioPlayer - 你必须创建一个属性才能让它工作吗? (X代码)

c - free() 函数如何收集有关号码的信息。要释放的字节数

linux - 为什么我可以在/proc/pid/maps 输出中看到几个相同的段?

ios - Cell内的TableView动态高度问题

ios - 使用按钮将日期增加 2 周

ios - 处理 iOS 键盘上的标记文本