Sha*_*e N 7 xcode objective-c ios swift
我在Swift中使用ReactiveCocoa.我需要使用以下方法:
rac_signalForSelector(selector: Selector, fromProtocol: Protocol?)
传递选择器工作正常Selector("method:"),但我找不到如何将委托协议传递给fromProtocol参数.
将协议类型从委托传递给这样的方法签名的正确方法是什么?
编辑:添加方法文档和最佳尝试
该方法的文档如下:
selector - 要监视其调用的选择器.如果它不存在,它将使用协议中的信息实现,并且可以接受非对象参数并返回值.这不能将C数组或联合作为参数或返回类型.
protocol - 声明选择器的协议.如果选择器尚未在接收器上实现,则将用于类型信息.这不能为NULL,并且此协议中必须存在选择器.
我尝试过发送DelegateType.self,最后收到此错误:
无法找到
rac_signalForSelector接受提供的参数的重载
@objc你声明协议时使用过吗?
我相信SomeProtocol.self这是传递它的正确方法,但由于您将其传递到 obj-c API,因此需要使用@objc像文档中的示例这样的前缀:
@objc protocol HasArea {
var area: Double { get }
}
Run Code Online (Sandbox Code Playgroud)
编辑:原来有问题的协议来自一个库(用 Objective-C 编写,因此已经与 Objective-C 兼容),而不是在 Swift 中定义。
既然如此,这可能是一个编译器错误,因此在执行其他操作之前,请确保您使用的是最新版本的 Xcode(在撰写本文时为 beta 3)。
如果这不起作用,我认为NSProtocolFromString在修复编译器错误之前,使用 Tommy 的想法是最好的办法。