Swift,实现两次相同的委托(无组播)

时间:2018-12-03 20:55:07

标签: swift delegates

给出一个非常简单的协议:

protocol TheProtocol {
    func doSomething()
    func doSomethingElse()
    func doThis()
    func doThat()
}

我有一个Base类,有一个等待设置的委托。

// Can't modify this class at all
class Base  {
    public var delegate: TheProtocol?
}

我的第二个类B继承自此类Base,并实现TheProtocol以便将委托设置为其自身。

class B: Base, TheProtocol {

    override init() {
        super.init()
        self.delegate = self
    }

    func doSomething() {

    }
    func doSomethingElse() {

    }
    ... other methods to implement
}

现在,我想做的是拥有最后一个类C,该类包含B的实例,并设置委托。我希望代表在BC内部工作。

主要限制是我无法修改Base类。

class C: TheProtocol {

    var obj = B()

    init() {
        // If I do this it won't fire within B anymore
        obj.delegate = self
    }

    func doSomething() {

    }
    func doSomethingElse() {

    }
    ... other methods to implement
}

1 个答案:

答案 0 :(得分:0)

实际上可以使用代理委托。但是不建议这样做。

In Swift, how do I have a UIScrollView subclass that has an internal and external delegate?