小编典典

在Objective-C中使用Swift协议

swift

我正在将我的项目从Objective-c转换为Swift,并且正在使用一个Swift类,protocol我正在尝试在Objective-
c类中进行访问。我的问题是,delegate在Objective-C类中不可访问。这是我的速成班:

protocol RateButtonDelegate {
    func rateButtonPressed(rating: Int)
}

class RateButtonView: UIView {


    var delegate: RateButtonDelegate?

    var divider1: UIView!
    var divider2: UIView!
}

当我查看MyProject-Swift.h文件时,看不到delegate

@interface RateButtonViewTest : UIView
@property (nonatomic) UIView * divider1;
@property (nonatomic) UIView * divider2;
@end

当我尝试rateButtonView.delegate在我的Objective-c类中使用时,出现编译器错误。

有人知道这个问题吗?如何在Objective-c中访问Swift协议?


阅读 215

收藏
2020-07-07

共1个答案

小编典典

您需要使用@objc属性标记协议,以便可以从Objective-C访问该协议:

@objc protocol RateButtonDelegate {
    func rateButtonPressed(rating: Int)
}

Apple文档中的此页面涵盖了此问题。

2020-07-07