Objective c 未检测到Xcode内存泄漏的仪器

Objective c 未检测到Xcode内存泄漏的仪器,objective-c,xcode,memory,memory-leaks,instruments,Objective C,Xcode,Memory,Memory Leaks,Instruments,这件事我已经琢磨了好几天了。我仍在努力研究objective-c中的内存管理 以下是我的片段(为了清晰起见,请进行精简): waitingOperation只是一个本地私有NSString(没有@property、没有@synthesis、没有getter/setter) 当waitingOperation当前指向堆上的NSString时,当我将其分配给nil时,是否应该泄漏内存?我对该方法的调用是在从UILabel display.text传递NSString的ios应用程序中进行的。我一直在

这件事我已经琢磨了好几天了。我仍在努力研究objective-c中的内存管理

以下是我的片段(为了清晰起见,请进行精简):

waitingOperation只是一个本地私有NSString(没有@property、没有@synthesis、没有getter/setter)


当waitingOperation当前指向堆上的NSString时,当我将其分配给nil时,是否应该泄漏内存?我对该方法的调用是在从UILabel display.text传递NSString的ios应用程序中进行的。我一直在用仪器分析这段代码,我从来没有看到任何泄漏。我非常希望能澄清这一点。提前感谢。

您没有通过调用
retain
waitingOperation
提出所有权要求,因此您没有责任
发布


如果字符串在其他地方释放(例如,通过处理
UILabel
),这可能会使您在某个时候遇到问题,在这种情况下,您将留下一个悬空的指针。但是你没有泄漏任何东西。

非常感谢。我认为这是有道理的。事实上,我说错话了。这真的很有趣。我看到在应用程序的生命周期内,堆上的每个按钮都存在一个对象。没有泄漏,我指向这些按钮对象的临时指针在应用程序运行期间是安全的。我希望我的理解是正确的。另外,是否建议使用此表单,或者我应该在ios应用程序中保留并释放此UIButton对象?@Tom如果按钮位于NIB文件中,则不需要单独管理它。但是,如果您以一种可能超出其容器范围的方式存储和使用对按钮等对象的引用,那么您需要显式地管理外部所有权。
- (void)performOperation:(NSString *)operation
{
    if ([@"+" isEqual:operation]) 
    {
        waitingOperation = operation;
    }
    else if ([@"C" isEqual:operation])
    {
        waitingOperation = nil;
    }

}