Iphone 想要完全解除锁定对象';记忆

Iphone 想要完全解除锁定对象';记忆,iphone,ios,memory-management,memory-leaks,Iphone,Ios,Memory Management,Memory Leaks,在一个控制器中,我以以下方式添加其他控制器的视图: objSecondController = nil; objSecondController = [[SecondController alloc]initWithNibName:@"SecondController" bundle:nil]; [self.view addSubview:objSecondController.vie

在一个控制器中,我以以下方式添加其他控制器的视图:

objSecondController = nil;
objSecondController = [[SecondController alloc]initWithNibName:@"SecondController"
                                                        bundle:nil];
[self.view addSubview:objSecondController.view];
在加载objSecondController时,我执行以下操作:

self.pdfView = [[PDFView alloc] init];     
[self.view addSubview:self.pdfView.view];
if(self.pdfView)
{
    [self.pdfView.view removeFromSuperview];
    [self.pdfView release];
    self.pdfView = nil;
}
然后我根据它的方法指定pdf

在更改pdf的其中一个按钮单击方法中,我执行以下操作:

self.pdfView = [[PDFView alloc] init];     
[self.view addSubview:self.pdfView.view];
if(self.pdfView)
{
    [self.pdfView.view removeFromSuperview];
    [self.pdfView release];
    self.pdfView = nil;
}
然后再做一次:

self.pdfView = [[PDFView alloc] init];     
[self.view addSubview:self.pdfView.view];
然后我根据它的方法指定pdf

现在self.pdfView是第三方库,每当我使用self.pdfView时,它的保留计数会自动增加,因此当我释放self.pdfView时,它的保留计数不会变为0,因此即使我释放它们,它也不会解除锁定

pdf的大小分别为25MB和39MB,因此之前的内存无法完全释放,因此会因内存过多而崩溃


我应该怎么做才能使self.pdfView完全释放内存,这样在加载其他大型pdf时就不会产生问题?

假设您已经正确地实现了setter/getter方法,那么您将使用此代码多次保留
pdfView

self.pdfView = [[PDFView alloc] init];
[self.view addSubview:self.pdfView.view];
这是因为
pdfView
的setter也将调用
retain

您需要使用:

self.pdfView = [[[PDFView alloc] init] autorelease];
[self.view addSubview:self.pdfView.view];
同时删除此语句,因为它不是必需的:

[self.pdfView release];
由于这已足够:

self.pdfView = nil;

我建议在
init
方法中分配
pdfView
,并在
dealloc
中释放它,然后在
viewDidLoad
中以及每当按下Change PDF按钮时更改视图中的PDF。无需
init
/
添加子视图
/
从SuperView中移除
/
发布
无论何时更改
PDFView
对象的内容。

您使用的是ARC还是MRR?你必须展示一些代码;闲聊无助于解决问题。我已经编辑了我的问题。谢谢你的答复。问题是,库只支持一种更改pdf的方法,类似于“initwithpdf”,所以我需要超时初始化。另外,单击按钮更改pdf时,将不会调用dealloc,在dealloc中,我将无法释放或使该对象为nil,因为我正在使用相同的变量加载不同的pdf,因此当时必须加载其他pdf。我正按照你的建议尝试自动释放。@Vibhooti,太遗憾了。听起来您需要使用您当时已经实现的方法。但是库仅在更改pdf时使用该方法,并且要求在更改为其他pdf之前,与库相关的所有内容都应为零