Iphone 这个拷贝代码有漏洞吗?

Iphone 这个拷贝代码有漏洞吗?,iphone,memory-management,memory-leaks,Iphone,Memory Management,Memory Leaks,这个密码有漏洞吗 // Move the group Group *movedGroup = [[Group alloc] init]; movedGroup = [[[[GroupList sharedGroupList] groups] objectAtIndex:fromIndex] copy]; [[GroupList sharedGroupList] deleteGroup:fromIndex]; [[GroupList sharedGroupList] insertGroup

这个密码有漏洞吗

// Move the group
 Group *movedGroup = [[Group alloc] init];
 movedGroup = [[[[GroupList sharedGroupList] groups] objectAtIndex:fromIndex] copy];
 [[GroupList sharedGroupList] deleteGroup:fromIndex];
 [[GroupList sharedGroupList] insertGroup:movedGroup atIndex:toIndex];

 // Update the loadedGroupIndex pointer
 if (loadedGroupIndex < fromIndex & loadedGroupIndex >= toIndex) {
  loadedGroupIndex = loadedGroupIndex + 1;
 } else if (loadedGroupIndex > fromIndex & loadedGroupIndex < toIndex) {
  loadedGroupIndex = loadedGroupIndex - 1;
 } else if (loadedGroupIndex == fromIndex) {
  loadedGroupIndex = toIndex;
 }
 [movedGroup release]
//移动组
Group*movedGroup=[[Group alloc]init];
movedGroup=[[[GroupList sharedGroupList]组]对象索引:fromIndex]复制];
[[GroupList sharedGroupList]删除组:fromIndex];
[[GroupList sharedGroupList]insertGroup:movedGroup-atIndex:toIndex];
//更新loadedGroupIndex指针
如果(loadedGroupIndex=toIndex){
loadedGroupIndex=loadedGroupIndex+1;
}else if(loadedGroupIndex>fromIndex&loadedGroupIndex
第一个实例化的组将泄漏出去。您丢失了对它的引用(分配
movedGroup=…
),并且它没有标记为自动释放。您可以将前两行缩减为:

Group *movedGroup = [[[[GroupList sharedGroupList] groups] objectAtIndex:fromIndex] copy];

它也会这样做,不会泄漏。

正确无误。movedGroup已被alloced,这意味着它成为一个指针,指向用于保存组对象的内存块。然后,您指向该对象,而不是指向复制的对象。这使得alloced组对象挂起,不再有任何对象指向它。如果你构建并分析你的项目,分析器会告诉你,你在第一行创建的对象没有做任何事情,这是一个可能的泄漏(事实就是如此)。是的,回想起来很明显。正是一个构建和分析向我指出了这一点。我只是想确保我能正确理解它。谢谢你的意见。