How to fix "'@IBInspectable' attribute is meaningless on a property that cannot be represented in Objective-C" warning How to fix "'@IBInspectable' attribute is meaningless on a property that cannot be represented in Objective-C" warning xcode xcode

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 berepresented 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

  1. 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.

  2. 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()        }    }}