存储在“测试”中的对象的潜在泄漏

时间:2013-09-03 04:35:01

标签: ios objective-c memory-leaks

我正在使用Xcode中的应用程序,我需要一些帮助。

- (IBAction)test:(id)sender {
    game *test = [[game alloc] initWithNibName: nil bundle: nil];

    [self presentViewController:test animated:YES completion:nil];
}    

我收到以下错误,我不知道如何修复它。

  

存储在“test”中的对象的潜在泄漏

2 个答案:

答案 0 :(得分:0)

如果不使用ARC,则应autorelease您的对象:

game *test = [[[game alloc] initWithNibName: nil bundle: nil] autorelease];

当您出示控制器时,它将保留给您,但当您解除它时,它将自动为您释放。您当前的代码可能会导致泄漏(除非您在其他地方手动release)。在autorelease之后使用release(或明确presentViewController)将阻止警告和泄漏。

答案 1 :(得分:0)

如果你没有使用ARC,那么你需要autorelease objcet。

当您进行objcet时,它的reatin count会增加1.但是在您的工作完成后,您的保留计数不会减少,这就是发生此错误(泄漏)的原因。因此,如果您使用了自动释放,那么autorelease pool在解除视图控制器后会管理您的保留计数会减少retain count