2010-09-13 1 views
4

Я изучаю, как отображать модальный вид с помощью UIAlertView в течение нескольких часов, и я понял, что показ его не «блокирует» код (отображается модальное окно и программа продолжает работать - мы должны использовать делегат, чтобы поймать выбранные действия в этом модальном окне). Затем я изучил несколько примеров и заметил, что каждый пример всегда выдает модальное окно сразу после его показа. Как это может работать должным образом, так как представление будет немедленно выпущено, так как код не останавливается?Почему выпуск UIAlertView просто показывает его, тогда как это не метод блокировки?

Вот пример (есть много других на Google):

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

Спасибо за вашу помощь, Apple, 92

ответ

5

Метод alloc вернет вам экземпляр, который имеет сохранить кол 1. Метод showModal, вероятно, retains, вид предупреждения, поэтому он остается на экране (и сохраняется) до тех пор, пока не будет нажата кнопка. Это имеет смысл для меня, поскольку вы представляете его как модальное окно, поэтому у него нет «родителя», который несет ответственность за его освобождение.

+0

Да! Если мы предположим, что showModal сохраняет, то счетчик сохранения будет увеличен на 1, а затем будет стоить 2. И релиз будет уменьшаться на 1 к 1. Затем, после релиза, у нас все еще есть счетчик, оценивающий 1, тогда окна не будут освобождены ... – user255607

+0

Но он снова выпущен, когда предупреждение отклонено. Это нормально, что предупреждение имеет показатель сохранения 1, пока он отображается. – pgb

8

Я не уверен, откуда вы получаете -showModal (обычный метод - только -show), но этот поступок добавляет предупреждение в иерархию представлений. Когда представление добавляется как подзаголовок другого представления (я считаю, что в этом случае это представление системного уровня, которое добавляется), оно сохраняется автоматически, поэтому вам не нужно.

+0

Да, это -show, not -showModal. – user255607

Смежные вопросы