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

use*_*607 4 iphone cocoa-touch uialertview

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

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

  [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message..." delegate:NULL cancelButtonTitle:@"OK" otherButtonTitles:NULL];  
  [alert showModal];  
  [alert release];
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助,Apple 92

Ben*_*ieb 8

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


pgb*_*pgb 5

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