内存泄漏问题

时间:2012-03-14 13:21:24

标签: iphone objective-c ios ipad memory-management

我正在尝试检查并修复我的代码/项目中的所有泄漏。我正在使用两个ViewControllers(A,B)。“一个”viewController对象始终在内存中可用我没有破坏它。在app用户中可以从A切换到B,反之亦然。当用户切换到“A”控制器时,B对象会创建并销毁。当破坏“B”时,我观察到泄漏,如下图所示Leaks

问题:在上面的图片中,我们可以看到所有堆栈跟踪看起来都是禁用的甲酸盐(不像普通的类方法指示),所以任何人都可以提供一些关于这些泄漏可能是什么的线索?如果有任何解决方案可以解决这些类型的泄漏?提前谢谢。

我的B类创作:

B *kbViewer = [[B alloc] initWithNibName:nil bundle:nil];
kbViewer.kbDataSource=nil;
kbViewer.kbDataSource=[kbi getBookDataSource]; 
kbViewer.path = selectedPath; 
[self.navigationController pushViewController:kbViewer animated:NO];
[kbViewer release];

在B类中有方法,因为我弹出了viewcontroller

-(IBACtion)bookShelfActionSelected{
    [self.navigationController popViewControllerAnimated:NO];
}

之后我的B级dealloc被解雇了。

-(void)dealloc{
    //here other than IBOutlets all the components/objects I am relesing
    //more over i am not releasing anywhere my IBOutlets
}

1 个答案:

答案 0 :(得分:0)

添加autorelease只是将对象的所有权委托给自动释放池。如果只有全局自动释放池,这是一种内存泄漏。 (你继续分配内存)。

创建B控制器的代码是正确的。从图片中我看不到B对象泄漏。也许问题是B如何分配一些对象?

BTW:ARC简化了内存管理,但它不是垃圾收集器,所以你需要知道你在做什么!