【发布时间】:2011-09-11 06:19:38
【问题描述】:
我刚刚开始学习 Objective-C。我阅读了 Cocoa 成为 XCoder 一书,我想我学到了基础知识。现在,我正在关注一个在线教程,在那里我遇到了这段代码:
@synthesize name;
- (IBAction)changeGreeting:(id)sender {
self.name = textInput.text;
NSString *nameString = name;
if([nameString length] == 0) {
nameString = @"Cartman";
}
NSString *greeting = [[NSString alloc]
initWithFormat:@"Hello, my name is %@!", nameString];
label.text = greeting;
[greeting release];
}
我的问题是,我们不应该在 *nameString 变量上也调用 'release' 吗? 或者通过这样做我也会清理应该在'dealloc'方法中释放的'name'属性? 因为如果我理解正确,我必须在这些函数的末尾对位于函数内的所有变量调用“释放”,但在类属性上,我必须只在“dealloc”方法中调用“释放”?
谢谢
【问题讨论】:
-
普遍的共识是,如果你在一个对象上调用alloc,它应该被释放到某个地方。我相信你创建的 NSString 是自动发布的。
标签: iphone objective-c xcode release retain