Я представляю UIAlertViewController без каких-либо кнопок, поскольку предполагается, что он просто информирует пользователей о том, что идет загрузка. Приложение должно загружать некоторые файлы в Amazon S3 (некоторые вещи происходят в параллельных потоках), и я боюсь, что ссылка на контроллер представления предупреждений будет потеряна, когда я захочу ее закрыть.
Любая идея о том, что может быть не так? Я даже не знаю, как это отладить, так как в области отладки нет ошибок?
У меня есть свойство уровня класса: var uploadInProgressAlert = UIAlertController()
Я использую этот код, чтобы представить свое оповещение без кнопок (он работает):
self.uploadInProgressAlert = UIAlertController(title: "Uploading", message: "Please wait.", preferredStyle: .Alert)
self.presentViewController(self.uploadInProgressAlert, animated: true, completion: nil)
Этот код предназначен для закрытия оповещения (оповещение не отклоняется): self.uploadInProgressAlert.dismissViewControllerAnimated(false, completion: nil)
В этой теме: iOS отклоняет UIAlertController в ответ на событие, о котором кто-то говорил "держать ссылку". Я не знаю, что значит «держать ссылку», и я думаю, что это может быть корнем проблемы.
EDIT: я поместил приведенный выше код в простое тестовое приложение, и оно работает. Но когда все усложняется с некоторыми параллельными потоками, я не могу найти способ отклонить предупреждение.
var delay4s = NSTimer()
var delay8s = NSTimer()
var alert = UIAlertController()
func showAlert() {
if NSClassFromString("UIAlertController") != nil {
alert = UIAlertController(title: "Uploading", message: "Please wait! \n\n", preferredStyle: UIAlertControllerStyle.Alert)
self.presentViewController(alert, animated: true, completion: nil)
}
}
func dismissAlert(){
self.alert.dismissViewControllerAnimated(true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
delay4s = NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: "showAlert", userInfo: nil, repeats: false)
delay8s = NSTimer.scheduledTimerWithTimeInterval(8.0, target: self, selector: "dismissAlert", userInfo: nil, repeats: false)
}
uploadInProgressAlert
. Вы уверены, что когда-нибудь вызывали очередь на увольнение? - person Zell B.   schedule 06.08.2015