2

我使用 UIAlertview 输入一些文本,它工作正常。但是,alertview 关闭后,在打开 alertview 之前内存仍然增加了 17MB 以上(从 9MB 到 26MB)。我使用 Instrument Allocation 来测量堆内存和活动监视器来测量它。它们都显示了相似的结果。当我切换到其他应用程序时,alertview 增加的内存将减少到适当的水平。正常吗?我的环境是iPhone4+iOS6。这是一些尝试的代码。

   UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"input caption" message:@"text"
                                                   delegate:self cancelButtonTitle:@"cancel"  otherButtonTitles:@"OK", nil];
   [alert show];
   [alert release];

谢谢你。


亲爱的 Naveed S 和 Purr, 非常感谢。我不确定我是否正确遵循了您的建议。但是我用Activity monitor watch the Real mem,alertview关闭后内存还是增加了20MB左右。我在 [alert show] 之后删除 [alert release],然后我写了

  [alert show];
 //[alert release];

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
 { [alertView dismissWithClickedButtonIndex:buttonIndex animated:YES];
  [alertView autorelease];                                                      }      

此外,当我按下主页后应用程序进入后台模式时,内存会减少。(这与我之前的代码类似)。我怎么能正确地观看废弃的记忆。我什至不知道如何以正确的方式观看它......

顺便说一句,我的原始代码遵循此处的帖子。 Uialertview 和内存管理

4

1 回答 1

1

一方面,你应该自动释放你的 alertView。-alertView:didDismissWithButtonIndex:由 调用,因此当您的方法返回时UIAlertView, alertView 对象应该仍然有效(不是)。-release'd

更好的是,转换为 ARC 并使用手动完成-retain-release并且-autorelease;)

如果您不转换为 ARC,请执行以下操作:从原始帖子中的代码中删除 -release,取消注释//CRASH您的-alertView:didDismissWithButtonIndex:方法中的注释并将 更改-release-autorelease那里。

于 2013-01-22T13:01:46.493 回答