2
我一直在困惑这几天。我仍然试图围绕Objective-C中的内存管理进行讨论。在Xcode中没有检测到内存泄漏的仪器
这里是我的代码段(凝聚为清晰起见):
- (void)performOperation:(NSString *)operation
{
if ([@"+" isEqual:operation])
{
waitingOperation = operation;
}
else if ([@"C" isEqual:operation])
{
waitingOperation = nil;
}
}
waitingOperation仅仅是本土民营的NSString(没有@property,没有@synthesize,没有getter/setter方法)。
当我将waitingOperation指向nil时,它应该不是内存泄漏,当它指向堆上的NSString时?我对这个方法的调用是在一个从UILabel display.text传入NSString的ios应用程序中。我一直在用仪器分析这个代码,我从来没有看到任何泄漏。我真的很感激这方面的一些澄清。提前致谢。
非常感谢。我认为这是有道理的。我实际上误报了UILabel。这真的是UIButton。我发现在应用程序的整个生命周期内,堆上的每个按钮都存在一个对象。没有泄漏,我的临时指针指向这些按钮对象是安全的应用程序的持续时间。我希望我能正确理解这一点。 – darkhorse 2011-05-21 14:10:21
此外,这种形式建议或应该保留,然后释放这个UIButton对象内的iOS应用程序? – darkhorse 2011-05-21 14:18:39
@Tom如果按钮位于NIB文件中,则无需单独进行管理。但是,如果您以某种方式存储和使用对像按钮这样的对象的引用,这种方式可能会超出其容器的范围,那么您需要明确管理该外部所有权。 – walkytalky 2011-05-21 15:15:32