В Objective-C, если бы я хотел использовать определенный класс, который присутствует только в новой версии iOS, я бы сделал что-то вроде этого:
if( [UIBlurEffect class] ) {
// do something with UIBlurEffect
}
else {
// gracefully fallback to old behavior
}
Однако эквивалент Swift:
if UIBlurEffect.self != nil {
let blur: UIBlurEffect = UIBlurEffect(...)
// ...
else {
// ...
}
// also occurs with NSClassFromString("UIBlurEffect")
не имеет одинаковой функциональности.
Если вы запускаете в среде, где NSNewFeature
доступно, все в порядке. Но если класс не определен, я получаю сообщение об ошибке при запуске приложения:
dyld: Symbol not found: _OBJC_CLASS_$_UIBlurEffect
Итак, как мне сделать слабую ссылку в Swift?
Изменить Добавлен UIBlurEffect
в качестве конкретного примера.