Quando mi definisco un inizializzatore UIAlertController
convenienza:estensione UIAlertController convenienza init avvertimento
extension UIAlertController {
convenience init(message: String?) {
self.init(title: nil, message: message, preferredStyle: .Alert)
self.addAction(UIAlertAction(title: "OK", style: .Cancel, handler: nil))
}
}
e utilizzarlo in un pulsante di azione nel mio sottoclasse di UIViewController
:
func buttonAction(button: UIButton) {
let alert = UIAlertController(dictionary: nil, error: nil, handler: nil)
presentViewController(alert, animated: true, completion: nil)
}
e scatto che pulsante sul simulatore , Ricevo un avviso:
Tentativo di caricare la vista di un controller di vista whi Le si deallocando non è consentito e può causare un comportamento indefinito (UIAlertController)
Tuttavia, non ottengo un avviso se invece di un inizializzatore convenienza, io uso una funzione globale:
func UIAlertControllerWithDictionary(message: String?) -> UIAlertController {
let alert = UIAlertController(title: nil, message: message, preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Cancel, handler: nil))
return alert
}
Ho segnalato questo a Apple come un bug di iOS SDK.
Fino a quando non viene risolto, è OK ignorare l'avviso e utilizzare l'inizializzatore di convenienza?
Wow. Eccellenti capacità di debugging! Come fai a sapere tutto questo? Hai appena usato il debugger Xcode, hai impostato un breakpoint e sei passato? – ma11hew28
Un mix di esperienza, conoscenza del runtime Objective-C e sì, debugging :) – fluidsonic