小编Ohi*_*end的帖子

是否有关于 Swift 协议关联类型使用 `=` 与 `:` 的信息?

我试图找出是否有关于 Swift 协议associatedtype使用 a=而不是:.

例如。 associatedtype Thing = SomeOtherThingassociatedtype Thing: SomeOtherThing

不要与我typealias Thing = SomeOtherThing始终=相信的(可能让我困惑的)混淆。

我试图抽象包含委托并使用=for associatedtypes 的类的用法,直到遇到一个问题,即该类型的变量由于 而没有公开其属性=,而是需要通常的:,这对我来说是从某种意义上说,但是当我将一个特定更改=为 a时:,它导致一切都崩溃了。我在下面提供了一个示例,其中的想法是能够自由获取/设置委托对象,但或多或​​少有一个协议说它的委托必须是关联类型的类型(带有 )而=不仅仅是正如似乎暗示的那样,“你必须遵守这一点” :

我也不知道我是否迈出了这一步太过分的一步,还有其他更好的方法可以在测试方面表达这一点。这似乎是必需的,因为我不能完全依赖外部对象在测试中按预期工作,而是需要模拟它以故意失败,在某些情况下如此。

import Foundation

// Concrete objects (eg external framework)

protocol ManagerDelegate: AnyObject {
    func managerDidSomething(_ manager: Manager)
}

class Manager {
    weak var delegate: ManagerDelegate?
    func doSomething() {
        delegate?.managerDidSomething(self)
    }
}

// …
Run Code Online (Sandbox Code Playgroud)

generics unit-testing ios associated-types swift

5
推荐指数
1
解决办法
203
查看次数

标签 统计

associated-types ×1

generics ×1

ios ×1

swift ×1

unit-testing ×1