符合Swift中的Obj-C协议

时间:2016-06-22 09:45:43

标签: objective-c swift

我有以下协议(用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工作但我不想改变我的协议头,因为我有很多其他协议以完全相同的方式大写。

0 个答案:

没有答案