func в swift для "self" вызывает ошибку в Xcode - PullRequest
0 голосов
/ 22 марта 2019

XCode автоматически сгенерировал эту быструю строку для протокола - я только запустил класс и XCode в комплекте со всеми функциями протокола:

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

EDIT: Вот весь код:

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

Как устранить ошибку? спасибо

1 Ответ

0 голосов
/ 24 марта 2019

Я нашел проблему.Мой делегат должен объявить свой суперкласс, который является NSObject ... примерно так:

class myDeviceBrowserDelegate : NSObject, ICDeviceBrowserDelegate {
...

Тогда функция self (среди прочих) была показана как переопределяющая определение протокола, так что теперь я мог просто удалить тефункции.На самом деле, я должен объявить только две первые функции.

Я нашел эту ссылку, которая помогла объяснить написание делегата в swift: https://medium.com/@agoiabeladeyemi/protocol-in-swift-with-practical-examples-8b955268ce39

...