在Swift中被Ambiguous Reference Member Reference错误所困惑

时间:2016-03-21 22:41:22

标签: swift swift2

鉴于此工作区示例:

Playground execution failed: Playground2.playground:6:3: error: ambiguous reference to member 'peripheral'
                self.peripheral.writeValue([], forDescriptor: 0)
                ^~~~
Playground2.playground:5:6: note: found this candidate
        var peripheral:CBPeripheral!
            ^
Playground2.playground:1:7: note: found this candidate
        func peripheral(peripheral: CBPeripheral, didUpdateValueForDescriptor descriptor: CBDescriptor, error: NSError?) {

我收到的错误如下:

self.peripheral

因此,它似乎无法确定我的peripheral代码是否是对我名为peripheral的变量的引用,还是我选择实施的代理函数之一?我想我可以将import Foundation extension Int { func frobnicate() { } func barf() { } } class YakAttack: NSObject { var something:Int! func something(something:Int, else:Int) { } func foobar() { self.something.frobnicate() } } 变量重命名为其他内容......

但让我感到惊讶的是,如果我构建一个类似的例子,它就没有消除歧义的问题:

foobar()

self.something函数应该与{{1}}引用存在相同的问题,但它没有这样的问题。有什么区别?

(我正在使用XCode 7.3 Beta 5,其中包含最新的Swift版本)

1 个答案:

答案 0 :(得分:2)

我最好的猜测是,由于处理Objective-C协议/数据类型而导致混淆的消息。我没有资格分析具体的内容,但到目前为止,我已经了解到在处理这两种语言时仍会出现一些像这样的奇怪错误。

我猜这个问题会在未来发生,但是现在你可能只是更改了变量名称。