为什么发布UIAlertView只是为了显示它而不是阻塞方法?

时间:2010-09-13 21:33:58

标签: iphone cocoa-touch uialertview

我一直在研究如何使用UIAlertView显示模态视图几个小时,我明白它显示它不会“阻塞”代码(显示模态窗口并且程序保持运行 - 我们必须使用委托来捕获此模态窗口上的选定操作)。然后我研究了几个例子并注意到每个例子总是在显示之后释放模态窗口。如果代码不会停止,视图将立即释放,这怎么能正常工作?

以下是示例(Google上有许多其他内容):

  [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message..." delegate:NULL cancelButtonTitle:@"OK" otherButtonTitles:NULL];  
  [alert showModal];  
  [alert release];

感谢您的帮助, Apple 92

2 个答案:

答案 0 :(得分:8)

我不确定你从哪里获取-showModal(通常的方法只是-show),但该行为会将警报添加到视图层次结构中。当一个视图被添加为另一个视图的子视图时(我相信这是一个正在添加的系统级视图),它会自动保留,所以你不必这样做。

答案 1 :(得分:5)

alloc方法将返回一个保留计数为1的实例。 showModal方法可能retains警报视图,因此它会保留在屏幕上(并保留),直到点击按钮为止。这对我来说很有意义,因为你把它作为模态窗口呈现,所以它没有“父”,它负责释放它。