Я добавил наблюдателя
override func viewDidLoad()
{
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector:"selector name", name: "observer name", object:nil)
...
}
При удалении наблюдателя в deinit,
deinit
{
NSNotificationCenter.defaultCenter().removeObserver(self, forKeyPath: <some string>)
}
приложение иногда аварийно завершает:
Завершение приложения из-за неперехваченного исключения "NSRangeException", причина: "Невозможно удалить класс наблюдателя" для ключевого пути "некоторая строка" из NSNotificationCenter, потому что он не зарегистрирован как наблюдатель.
Итак, я пытаюсь добавить do/catch
deinit
{
do{
try NSNotificationCenter.defaultCenter().removeObserver(self, forKeyPath: <some string>)
}catch{}
}
Но я получаю предупреждение:
блок catch недоступен, поскольку в блоке do не выполняются ошибки
И приложение вылетает
и когда я добавляю попытку
deinit
{
do{
try NSNotificationCenter.defaultCenter().removeObserver(self, forKeyPath: <some string>)
}catch{}
}
Я получаю это предупреждение:
в try expresion не происходит никаких вызовов для металирования функций
И приложение вылетает
Как это сделать?