Swift ViewController,Objective C protocol,Type' ViewController'不符合协议' MyProtocolDelegate'

时间:2016-07-14 16:24:32

标签: ios objective-c swift uiviewcontroller delegates

我正在研究具有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 ++可行 请指出此协议使用的错误

1 个答案:

答案 0 :(得分:0)

swift类型Int32是obj-c int

的正确等价物

但是你应该使用C类别名,以避免混淆。 在你的例子中,它将是

func updateCount(count:CInt)
{
    return
}

看看Apple - Interacting with C APIs