【问题标题】:func in swift for "self" causes error in Xcodeswift 中的“self”函数导致 Xcode 中的错误
【发布时间】:2019-03-24 21:26:42
【问题描述】:

Xcode 自动为协议生成了这条 swift 行 - 我刚刚启动了这个类,Xcode 完成了所有协议功能:

func `self`() -> Self {
        <#code#>
    }

编辑: 这是整个代码:

import Foundation
import ImageCaptureCore

class myDeviceBrowserDelegate : ICDeviceBrowserDelegate {
    func deviceBrowser(_ browser: ICDeviceBrowser, didAdd device: ICDevice, moreComing: Bool) {
        <#code#>
    }

    func deviceBrowser(_ browser: ICDeviceBrowser, didRemove device: ICDevice, moreGoing: Bool) {
        <#code#>
    }

    func isEqual(_ object: Any?) -> Bool {
        <#code#>
    }

    var hash: Int = 0

    var superclass: AnyClass?

    func `self`() -> Self {
        <#code#>
    }

    func perform(_ aSelector: Selector!) -> Unmanaged<AnyObject>! {
        <#code#>
    }

    func perform(_ aSelector: Selector!, with object: Any!) -> Unmanaged<AnyObject>! {
        <#code#>
    }

    func perform(_ aSelector: Selector!, with object1: Any!, with object2: Any!) -> Unmanaged<AnyObject>! {
        <#code#>
    }

    func isProxy() -> Bool {
        <#code#>
    }

    func isKind(of aClass: AnyClass) -> Bool {
        <#code#>
    }

    func isMember(of aClass: AnyClass) -> Bool {
        <#code#>
    }

    func conforms(to aProtocol: Protocol) -> Bool {
        <#code#>
    }

    func responds(to aSelector: Selector!) -> Bool {
        <#code#>
    }

    var description: String = ""


}

但它给出了一个错误: 方法不能是 @objc 要求的实现,因为它的结果类型不能在 Objective-C 中表示

如何清除错误? 谢谢

【问题讨论】:

  • 当您说“为协议”时,请包括协议。错误几乎肯定存在。
  • 您的协议中有一个名为self 的函数?这可能是个坏主意,但我还没有测试过自己。
  • 你有没有尝试让一个纯 Swift 对象符合NSObjectProtocol
  • 我编辑了问题以显示整个代码。我刚开始上课,其余的都是 Xcode 填写的,但它有提到的错误。

标签: objective-c swift xcode protocols


【解决方案1】:

我发现了问题。我的委托需要声明它的超类 NSObject... 像这样:

class myDeviceBrowserDelegate : NSObject, ICDeviceBrowserDelegate {
...

然后 self 函数(以及其他函数)显示为覆盖协议定义,因此我现在可以删除这些函数。实际上,只有我必须声明的前两个函数。

我发现这个链接有助于快速解释代表的写作:https://medium.com/@agoiabeladeyemi/protocol-in-swift-with-practical-examples-8b955268ce39

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2018-09-24
    • 2016-04-22
    • 2017-01-15
    • 1970-01-01
    相关资源
    最近更新 更多