我在Swift中使用ReactiveCocoa . 我需要使用以下方法:
rac_signalForSelector(selector: Selector, fromProtocol: Protocol?)
传递选择器与 Selector("method:")
正常工作,但我找不到如何将委托协议传递给 fromProtocol
参数 .
将协议类型从委托传递给这样的方法签名的正确方法是什么?
EDIT: Adding method documentation and best attempt
该方法的文档如下:
selector - 要监视其调用的选择器 . 如果它不存在,它将使用协议中的信息实现,并且可以接受非对象参数并返回值 . 这不能将C数组或联合作为参数或返回类型 . protocol - 声明选择器的协议 . 如果选择器尚未在接收器上实现,则将用于类型信息 . 这不能为NULL,并且此协议中必须存在选择器 .
我试过发送DelegateType.self,我最终收到此错误:
找不到接受提供的参数的rac_signalForSelector的重载
1 回答
你宣布你的协议时使用了
@objc
吗?我相信
SomeProtocol.self
是通过它的正确方法但是因为你将它传递给obj-c API它需要以@objc
为前缀,如this example from the docs:Edit :原来所讨论的协议来自一个库(用objective-c编写,所以已经与objective-c兼容),没有在Swift中定义 .
在这种情况下,它可能是一个编译器错误,所以在你做任何事情之前 make sure you're using the latest version of Xcode (写作时的beta 3) .
如果没有't work out, I think Tommy'的想法使用
NSProtocolFromString
是最好的办法,直到修复编译器错误 .