我已经困惑了好几天了。我仍然试图在objective-c中围绕内存管理。
这是我的代码段(为了清晰起见而缩写):
- (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时,我不应该泄漏内存吗?我对这个方法的调用是在一个ios应用程序中,它从UILabel display.text传递NSString。我一直用仪器分析这段代码,我从来没有看到任何泄漏。我真的很感激这一点。提前谢谢。
答案 0 :(得分:1)
您尚未通过致电waitingOperation
对retain
提出所有权声明,因此您对release
不承担任何责任。
如果字符串在其他地方被释放(例如通过处理UILabel
),这可能会让你在某些时候遇到问题,在这种情况下你会留下一个悬空指针。但你在这里没有泄漏任何东西。