#swift
Вопрос:
У меня есть этот код в настраиваемом представлении:
class AView: UIView {
func setup {
Bundle.main.loadNibNamed("(Self.self)", owner: self, options: nil)
}
}
Я ожидал , что это загрузит имя файла с наконечником AView
, в режиме отладки он работает без проблем. Но при запуске в режиме выпуска происходит сбой.
Сообщение об ошибке выглядит так:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: '_TtC10ATPlatformP33_BB740EC0B8824C2F1932C467ED63DEF214LanguageBundle </private/var/containers/Bundle/Application/B0094397-EC2C-4550-8981-0CF2DCFB580C/xxx.app> (loaded)' with name 'Self''
Это означает "(Self.self)"
возвращаемую Self
строку.
Что я понял , так это когда установил Swift Compiler - Code Generation
-> > Optimization Level
значение [-Onone]
, которое работает без сбоев.
Кто — нибудь знает, почему?
Ответ №1:
Это ошибка SR-14564 « "(Self.self)"
вызывает проблему в Xcode 12.5 при оптимизации Swift», и она уже исправлена в Swift 5.5. Вероятно, вы используете Xcode 12.5, который использует Swift 5.4. Попробуйте обновить до бета-версии Xcode 13. Вы можете скачать его здесь.
Комментарии:
1. Еще одна интересная вещь заключается в том, что устройство iPad работает нормально, а iPhone-нет. Спасибо.