2016-12-18 4 views
0

После переноса Swift 3 аварий приложения наПосле переноса Swift 3 аварии на доступ вида ViewController в

-[_SwiftValue unsignedIntegerValue]: unrecognized selector sent to instance 0x60800064d5f0 
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_SwiftValue unsignedIntegerValue]: unrecognized selector sent to instance 0x60800064d5f0' 

При попытке доступа vc.view. Вот соответствующий фрагмент кода. Код вызывается от UIViewController.

guard let vc = storyboard?.instantiateViewController(withIdentifier: "some-viewcontroller-id") else { 
    return 
} 

if let vc = vc as? SomeViewController { 
    let theView: UIView = vc.view 
    theView.translatesAutoresizingMaskIntoConstraints = false 
} 

Если я останавливаюсь на контрольной точке перед вызовом let theView: UIView = vc.view и po vc.view в окне отладки, я получаю ту же ошибку в окне отладки.

-[_SwiftValue unsignedIntegerValue]: unrecognized selector sent to instance 

НО, если я po vc.view снова я ... вуаля ...

Optional<UIView> 

и исполнение может быть возобновлено. Я использую Xcode 8.1. Воспроизводит как на устройстве iOS, так и на симуляторе.

Любые предложения?

+0

Просто быть уверен - вы пробовали обычную - чистую, чистую папку сборки, ясно полученные данные, сброс симулятора (это происходит на симуляторе или на устройстве), перезапустите Xcode? Какая версия Xcode? – Losiowaty

+0

@ Losiowaty. Я использую Xcode 8.2. Воспроизводит как на устройстве, так и на Simulator. Да, я все пробовал. – mrvincenzo

ответ

0

Я думаю, что это не из-за UIViewController.view. Ваша ошибка говорит, что это Unrecognized Selector send to instance allocating at some kind of memory index. Если один из методов выбора ur является приватным, поставьте @objc перед ним. Я могу с уверенностью сказать, что это не ошибка значения Nil.

0

Устранена

Чтобы сделать длинную историю короткой, это не связано с UIViewController.view на всех! Он связан с проблемой String.Encoding.utf8.rawValue, описанной in this answer.

По какой-то причине авария на симуляторе не давала много информации, за исключением того, что я уже вставил в вопрос. На устройстве он подготовил подробный отчет, который помог мне найти основную причину этого сбоя.

0

сделать раскадровку-идентификатор точки зрения как «некоторым-ViewController-ид» и он будет работать нормально

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