我想知道这是否是避免 Cocoa 应用程序内存泄漏的正确方法。
我的应用程序有一个更新NSMenu
项目的方法:
//Remove and Release old Status Scan Menu:
if ([statusMenuScansMenu numberOfItems] !=0) {
for (NSMenuItem *menueItemToBeReleased in [statusMenuScansMenu itemArray]) {
[statusMenuScansMenu removeItem:menueItemToBeReleased];
[menueItemToBeReleased release];
}
}
//New Status Scan Menu:
for (MyObject* myObject in myArray) {
NSMenuItem * scanMenuItem = [[NSMenuItem alloc] init];
[scanMenuItem setTitle:[myObject name]];
[statusMenuScansMenu addItem:scanMenuItem];
}
如您所见,在添加新项目之前,我会删除所有以前的项目并将其发送release
给他们。然后我添加新的。
这是内存管理的最佳方式吗?
如果我在 Xcode 4.1 中分析我的代码,它会说存在潜在的内存泄漏。