我正在将我的项目从Objective-c转换为Swift,并且正在使用一个Swift类,protocol我正在尝试在Objective- c类中进行访问。我的问题是,delegate在Objective-C类中不可访问。这是我的速成班:
protocol
delegate
protocol RateButtonDelegate { func rateButtonPressed(rating: Int) } class RateButtonView: UIView { var delegate: RateButtonDelegate? var divider1: UIView! var divider2: UIView! }
当我查看MyProject-Swift.h文件时,看不到delegate:
MyProject-Swift.h
@interface RateButtonViewTest : UIView @property (nonatomic) UIView * divider1; @property (nonatomic) UIView * divider2; @end
当我尝试rateButtonView.delegate在我的Objective-c类中使用时,出现编译器错误。
rateButtonView.delegate
有人知道这个问题吗?如何在Objective-c中访问Swift协议?
您需要使用@objc属性标记协议,以便可以从Objective-C访问该协议:
@objc
@objc protocol RateButtonDelegate { func rateButtonPressed(rating: Int) }
Apple文档中的此页面涵盖了此问题。