19

我通过使用以下方法UIAlertController创建类别在我的应用程序中添加:UIViewController

- (void)showAlertViewWithTitle:(NSString *)title
                       message:(NSString *)message
                       actions:(NSArray *)alertActions
{
   UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title ? : @"" message:message preferredStyle:UIAlertControllerStyleAlert];

   if (alertActions.count) {
      for (UIAlertAction *action in alertActions) {
         [alertController addAction:action];
      }
   } else {
      UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
      [alertController addAction:action];
   }

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

起初,一切看起来都很好,但是当我使用 Instruments 分析泄漏时,每次调用此方法时,都会出现一些泄漏:

在此处输入图像描述

这是调用的showAlertViewWithTitle:message:actions:完成方式

[self showAlertViewWithTitle:nil message:@"Test message" actions:nil];

知道为什么我会得到所有这些泄漏吗?

- 编辑 -

我在示例项目中尝试了以下内容:

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"title" message:@"message"
                                                   delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];

我得到了同样的泄漏。我真的不知道发生了什么...

4

2 回答 2

3

这是一个 iOS 错误。

这也是1 天前发布的带有 UIAlertController 或 UIActionSheet 的 SO 问题 iOS 8 Only Memory Leak 的副本。

请参阅Apple Bug Reporter问题21005708,ARC 下 UIAlertController 中的内存泄漏。

于 2015-05-18T21:18:33.160 回答
-2

iOS 8.2 和 Xcode 6.2 似乎修复了泄漏

于 2015-03-13T08:33:56.383 回答