How to fix "'@IBInspectable' attribute is meaningless on a property that cannot be represented in Objective-C" warning
Maybe.
The exact error (not warning) I got when doing a copy/paste of class CircularIndicator: UIView
is:
Property cannot be marked @IBInspectable because its type cannot be represented in Objective-C
I resolved it by making this change:
@IBInspectable var backgroundIndicatorLineWidth: CGFloat? { // <-- warning here
didSet {
backgroundIndicator.lineWidth = backgroundIndicatorLineWidth!
}
}
To:
@IBInspectable var backgroundIndicatorLineWidth: CGFloat = 0.0 {
didSet {
backgroundIndicator.lineWidth = backgroundIndicatorLineWidth!
}
}
Of course, backgroundIndicator
is undefined in my project.
But if you are coding against didSet
, it looks like you just need to define a default value instead of making backgroundIndicatorLineWidth
optional.
Below two points might helps you
As there is no concept of optional in objective c, So optional IBInspectable produces this error. I removed the optional and provided a default value.
If you are using some enumerations types, then write @objc before that enum to remove this error.
Swift - 5
//Change this with below
@IBInspectable public var shadowPathRect: CGRect!{
didSet {
if shadowPathRect != oldValue {
setNeedsDisplay()
}
}
}
To
@IBInspectable public var shadowPathRect: CGRect = CGRect(x:0, y:0, width:0, height:0) {
didSet {
if shadowPathRect != oldValue {
setNeedsDisplay()
}
}
}