我正在研究具有swift ViewController的混合项目,在C ++类的包装器角色中使用C ++代码和目标C类。到目前为止开发的部分工作。 我在Objective C中添加了简单的协议,它只声明了一个方法:
@protocol MyProtocolDelegate <NSObject>
- (void)updateCount:(int)count;
@end
@interface CvVideoCameraWrapper : NSObject
@property (weak,nonatomic) id <MyProtocolDelegate> delegate;
//remaining of my interface
@end
在swift代码中,我将MyProtocolDelegate添加到ViewController遵守并添加的其他协议中:
class ViewController: UIViewController, CvVideoCameraDelegate, UITextFieldDelegate, MyProtocolDelegate{
func updateCount(count:Int)
{
return
}
override func viewDidLoad() {
super.viewDidLoad()
self.typedName.delegate = self // this one works
self.videoCameraWrapper.delegate = self
// remaining of my viewDidLoad
}
//remaining of my ViewController
}
编译器显示错误: 输入&#39; ViewController&#39;不符合协议&#39; MyProtocolDelegate&#39;
我不知道在目标C和swift匹配中声明的委托方法签名,如果在目标C中的int类型和在swift中的Int是相同的,但我知道swift做了桥接和我的其他交互快速,客观的C和C ++可行 请指出此协议使用的错误
答案 0 :(得分:0)
swift类型Int32是obj-c int
的正确等价物但是你应该使用C类别名,以避免混淆。 在你的例子中,它将是
func updateCount(count:CInt)
{
return
}