我有以下协议(用Objective-C编写)
@protocol MCRequestHandler <NSObject>
@required
-(void) handleRequest: (MCRequest*) request
Error: (NSError*) error
User: (id) user;
@end
我正在尝试在Swift中使用它:
class ViewController: UIViewController, MCRequestHandler {
//...
func handleRequest(request: MCRequest!, Error error: NSError!, User user: AnyObject!) {
}
}
编译器产生两个错误解释:
1)
协议需要带有类型的函数'handleRequest(_:error:user :)' '(MCRequest!,错误:NSError!,用户:AnyObject!) - &gt;无效“
2)
Objective-C方法'handleRequest:错误:用户:'由方法提供 'handleRequest(_:Error:User :)'与要求不匹配 selector('handleRequest:error:user:')
如果我接受XCode的建议并将我的功能更改为:
func handleRequest(request: MCRequest!, error Error: NSError!, user User: AnyObject!)
错误保持不变。
发生了什么事?
如果我将协议方法更改为此(请注意大小写更改):
-(void) handleRequest: (MCRequest*) request
error: (NSError*) Error
user: (id) User;
Swift工作但我不想改变我的协议头,因为我有很多其他协议以完全相同的方式大写。