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