使用Swift扩展UIKit类会破坏Interface Builder

时间:2015-02-11 18:37:43

标签: ios xcode swift

我遇到了最奇怪的错误。当您使用Swift扩展一些UIKit类来实现协议时,例如扩展UIButton以实现协议SomeProtocol(是的,它甚至可以为空):

protocol SomeProtocol {
}

extension UIButton: SomeProtocol {
}
在右键单击UIButton对象时,IB中的上下文菜单将失去大部分选项:

With extension

我应该删除该扩展程序,我会得到这个:

Without extension

有没有人遇到类似的东西?有解决方案吗?

Xcode 6.1.1和Xcode 6.3 Beta 1都会发生这种情况。无论你在哪里定义扩展 - 在项目的源文件中或在框架中作为子项目。

我尝试将协议声明为

@objc protocol SomeProtocol
@objc protocol SomeProtocol: class
protocol SomeProtocol: class

但没有工作。

1 个答案:

答案 0 :(得分:1)

原因可能是您要声明用于扩展ObjC类的纯Swift协议。 尝试将协议声明为@objc protocol SomeProtocol {,或者甚至强制它仅为类protocol SomeProtocol: class {