Falla de segmentación: 11; (xcode 8, Swift 3) después de usar NotificationCenter

Obtención de falta de segmentación en Xcode 8

Recientemente he migrado mi proyecto a Swift 3 . Xcode Versión 8.0 (8A218a) Obtengo este error cada vez que uso la notificación UIKeyboardWillShow:

Falló el command debido a la señal: Fallo de segmentación: 11`

Así es como estoy usando la notificación en mi código:

override func viewWillAppear(_ animated: Bool) { NotificationCenter.default.removeObserver(NSNotification.Name.UIKeyboardWillShow) NotificationCenter.default.removeObserver(NSNotification.Name.UIKeyboardWillHide) NotificationCenter.default.addObserver(self, selector: #selector(myViewController.keyboardWillShow(_:)), name:NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(myViewController.keyboardWillHide(_:)), name:NSNotification.Name.UIKeyboardWillHide, object: nil) } func keyboardWillShow(_ sender: Notification) { //keyboardWillShow Method } func keyboardWillHide(_ sender: Notification) { // keyboardWillHide Method } 

El proyecto se ejecuta correctamente cuando comento el código en el método viewWillAppear.

El tema principal: Fallo de segmentación: 11 , es un error de Xcode8 / Swift3 y debe enviar un informe de error .

Y sobre su código:

 NotificationCenter.default.removeObserver(NSNotification.Name.UIKeyboardWillShow) NotificationCenter.default.removeObserver(NSNotification.Name.UIKeyboardWillHide) 

No hay methods que eliminen a los observadores especificando solo sus nombres. removeObserver(_:) especificar el object del observador para removeObserver(_:) .

No estoy seguro de si esto es lo que quieres, pero puedes utilizar el removeObserver(_:name:object:) así:

 NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillShow, object: nil) NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillHide, object: nil) 

Estoy seguro de que esto no bloqueará tu Xcode.

Tuve el mismo problema en las mismas condiciones y entorno (Swift 3, Xcode 8) y para resolver este problema debes ponerlo:

 NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillShow, object: nil) NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillHide, object: nil) 

en lugar de:

 NotificationCenter.default.removeObserver(NSNotification.Name.UIKeyboardWillShow) NotificationCenter.default.removeObserver(NSNotification.Name.UIKeyboardWillHide)