这是 Objective-C Protocol 里面的出问题的函数
-(void)didReceiveData:(NSData*)data Device:(DFBlunoDevice*)dev;
用 Swift 实现的时候, Xcode 会自动将参数转为小写
func didReceiveData(data: NSData!, device dev: DFBlunoDevice!) { }
然后 Xcode 就会报错, 提示我 class 不 conform 那个 Protocol 。如果强行将 swift 函数的 device 写成 Device, Xcode 依旧是报错,要求我改成小写。
最后我的解决方案是直接将 Objective-C 的函数改写成这样
-(void)didReceiveData:(NSData*)data mDevice:(DFBlunoDevice*)dev;
问题来了:
- 是什么原因导致 Xcode 强行将参数转换成小写字母开头呢(我已经在 playground 里测试过大写字母开头的函数参数是可行的)?
- 有比更改 Objective-C 源代码更优的解决方法吗?