当我将currentView添加到Current ViewController时,我收到内存泄漏警告....这是我的代码..
NoOfGolferViewController *objNoOfGolferViewController = [[NoOfGolferViewController alloc]initWithNibName:@"NoOfGolferViewController" bundle:nil];
[objNoOfGolferViewController setParent:self];
[objNoOfGolferViewController.view setFrame:CGRectMake(15, 110, 290, 330)];
[self.view addSubview:objNoOfGolferViewController.view];
当我发布对象
时 [objNoOfGolferViewController release];
应用程序通过提供EXE_BAD_ACCESS消息而崩溃。
如何解决此内存泄漏警告?
提前致谢..
答案 0 :(得分:3)
只要视图在当前控制器中可见或使用,您就需要使objNoOfGolferViewController
对象保持活动状态。看起来最好的解决方案是使它成为当前类的实例变量并在其dealloc方法中释放objNoOfGolferViewController
答案 1 :(得分:1)
可能你是在本地声明变量。 而是将其设为全局并以dealloc发布。 这背后的原因是当您释放对象时,委托方法与正在进行的方法相关。
OR
删除视图后,您可以释放该对象。
答案 2 :(得分:0)
通常,在释放已经释放的对象时会收到此消息。我一直在使用下面的方法(在iOS4 - fast context switching的SO上找到)来追踪过去的这类问题:
#pragma mark - RETAIN DEBUG MAGIC
// -----------------------------------------------------------------------------
- (id)retain
{
NSLog(@"retain \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
return [super retain];
}
- (void)release
{
NSLog(@"release \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
[super release];
}
- (id)autorelease
{
NSLog(@"autorelease \t%s \tretainCount: %i", __PRETTY_FUNCTION__ , [self retainCount]);
return [super autorelease];
}
我几天前在SO处写了一个类似的例子(我遇到了保留和发布一些观点的问题)。如果您有兴趣,请点击此链接:Understanding iOS Instruments
祝你好运!答案 3 :(得分:0)
让它自动释放......如下所述
NoOfGolferViewController *objNoOfGolferViewController = [[[NoOfGolferViewController alloc]initWithNibName:@"NoOfGolferViewController" bundle:nil] autorelease];