У меня есть пользовательский элемент интерфейса, разработанный с помощью IBInspectables
, так что я могу использовать и изменять его в Интерфейсном Разработчике.Есть 2 проверяемых объекта, которые эффективно изменяют одно и то же свойство элемента, но немного другим способом.
На снимке экрана есть title
, который устанавливает заголовок элемента, и locTitleKey
, который получает NSLocalizedString
по ключу иустанавливает его в качестве заголовка.
Как видно из передачи различных значений этим проверяемым объектам:
- Если указано
locTitleKey
и title
оставлено пустым, используется локализованная строка - Если указаны оба,
title
используется, а локализованный игнорируется
Вопрос - это поведение предсказуемо?
Другими словамиМогу ли я смело предположить, что порядок оценки моего IBInspectables
всегда будет одинаковым?(title
, а затем locTitleKey
)
Чтобы получить больше контекста, здесь используются фрагменты кода.
title
определяется в области самого класса:
@IBDesignable
class StandardInputField: UIView, NibLoadable {
//...
@IBInspectable
public var title: String? {
didSet {
titleLabel.text = title
}
}
//...
}
И locTitleKey
определяется как расширение:
extension StandardInputField {
@IBInspectable var locTitleKey: String? {
get {
return nil
}
set(key) {
title = key?.localized
}
}
}