Swift 4.0 中的@IBInspectable
@IBInspectable in Swift 4.0
在迁移到 Swift 4.0
时,我遇到了 @IBInspectable
、
的问题
open class SVContactBubbleView: UIView
{
@IBInspectable open var dataSource: SVContactBubbleDataSource? //ERROR..!!
@IBInspectable open var delegate: SVContactBubbleDelegate? //ERROR..!!
}
public protocol SVContactBubbleDataSource
{
//Methods here
}
public protocol SVContactBubbleDelegate
{
//Methods here
}
出现的错误是:
Property cannot be marked @IBInspectable because its type cannot be
represented in Objective-C
在 Swift 3
中,它工作正常。我不明白 Swift 4
中出了什么问题。
此外,编译器未显示任何建议。它只是显示一条错误消息。
在Swift 4中为委托和数据源添加符号@objc(如下代码所示)
open class SVContactBubbleView: UIView {
@IBInspectable open var dataSource: SVContactBubbleDataSource?
@IBInspectable open var delegate: SVContactBubbleDelegate?
}
@objc // add notation here
public protocol SVContactBubbleDataSource
{
//Methods here
}
@objc // add notation here
public protocol SVContactBubbleDelegate
{
//Methods here
}
这是参考。解决错误的快照:
这是 @objc
表示法的 Apple 文档 - Protocol - Optional Protocol Requirements
在迁移到 Swift 4.0
时,我遇到了 @IBInspectable
、
open class SVContactBubbleView: UIView
{
@IBInspectable open var dataSource: SVContactBubbleDataSource? //ERROR..!!
@IBInspectable open var delegate: SVContactBubbleDelegate? //ERROR..!!
}
public protocol SVContactBubbleDataSource
{
//Methods here
}
public protocol SVContactBubbleDelegate
{
//Methods here
}
出现的错误是:
Property cannot be marked @IBInspectable because its type cannot be represented in Objective-C
在 Swift 3
中,它工作正常。我不明白 Swift 4
中出了什么问题。
此外,编译器未显示任何建议。它只是显示一条错误消息。
在Swift 4中为委托和数据源添加符号@objc(如下代码所示)
open class SVContactBubbleView: UIView {
@IBInspectable open var dataSource: SVContactBubbleDataSource?
@IBInspectable open var delegate: SVContactBubbleDelegate?
}
@objc // add notation here
public protocol SVContactBubbleDataSource
{
//Methods here
}
@objc // add notation here
public protocol SVContactBubbleDelegate
{
//Methods here
}
这是参考。解决错误的快照:
这是 @objc
表示法的 Apple 文档 - Protocol - Optional Protocol Requirements