将委托添加到 IBDesignable class 会导致 UI 不呈现

Adding delegate to IBDesignable class causes UI not to render

我正在开发一个 IBDesignable class,我注意到如果我尝试向 class 添加协议,它会导致错误 "Failed to render and update autolayout status"

如果我去掉协议,它可以正常工作,但是对于我将尝试创建的一些功能,这将非常有用。可用于重现错误的示例代码

import UIKit

protocol TestProtocol {}

@IBDesignable class TestDesignableButton: UIButton {        
    var delegate: TestProtocol?
}

有谁知道这是什么原因造成的?你知道这个问题是否有解决办法吗?

提前致谢

将您的协议声明更改为:

@objc protocol TestProtocol {}

就是这样,在我的测试中工作(我对你的代码做了一点改动,但改动不大——刚好足以确保我们的骨架正常工作)。请注意,可设计按钮实际上是绿色的;如果 IBDesignable 代码不工作就不会。它也在右边的检查器中显示 "Up to date"。